标签:位置 char 模块 system 定义 定向 网上 putc target
参考网上STM32修改fputc(int ch, FILE *f),把串口打印函数printf()重定向到UUART1模块的端口输出,最终未成功。
但循着类似解决问题的思路,直接在工程中查找有关printf()函数和fputc()函数的定义位置。
最终发现printf()函数在stdio.h头文件中定义,属于标准C的定义,无价值...
发现fputc()函数在retarget.c文件中定义:
int fputc(int ch, FILE *stream)
{
SendChar(ch);
return ch;
}
进一步对SendChar()剥皮,发现在retarget.c文件中定义。而retarget.c文件就是NDA102EC1 Series Debug Port and Semihost Setting Source File。
确认找对地方了,对retarget.c文件中的宏定义逐个排查,最终确认DEBUG_PORT就是定义的UUART端口。反向查找发现在system_NDA102EC1Series.h头文件开始部分:
/* Using UART0 or UART1 */
#define DEBUG_PORT UUART0
//#define DEBUG_PORT UUART1
修改DEBUG_PORT指向UUART1:
/* Using UART0 or UART1 */
//#define DEBUG_PORT UUART0
#define DEBUG_PORT UUART1 //2019-11-23 revise UUART1 as debug_port
OK,可以在主函数中放心使用printf()向UUART1端口打印输出调试信息了。
新唐NDA102EC1中更改UUART1作为调试串口打印输出调试信息
标签:位置 char 模块 system 定义 定向 网上 putc target
原文地址:https://www.cnblogs.com/aesir/p/11918851.html