新唐NDA102EC1中更改UUART1作为调试串口打印输出调试信息

Posted aesir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新唐NDA102EC1中更改UUART1作为调试串口打印输出调试信息相关的知识,希望对你有一定的参考价值。

新唐NDA102EC1中更改UUART1作为调试串口打印输出调试信息

参考网上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作为调试串口打印输出调试信息的主要内容,如果未能解决你的问题,请参考以下文章

新唐NUC980使用记录:开发环境准备与编译配置基础说明

新唐NUC980使用记录:在用户应用中使用GPIO

新唐NUC980使用记录:在驱动程序中使用GPIO

新唐ISP操作步骤(转)

EC1、EC2和FK有啥区别?

新唐NUC980使用记录:使用wpa_supplicant访问无线网络