STM32G474-Nucleo调试问题——串口printf重定向无法打印字符
按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:
- #ifdef __GNUC__
- #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
- #else
- #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
- #endif /* __GNUC__ */
复制代码- PUTCHAR_PROTOTYPE
- {
- /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
- HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);
- return ch;
- }
复制代码
再执行语句printf("How are you?");,发现串口没有办法打印字符。
因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:
在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。
问题解决,结果如下:
|