打印
[视频教程]

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

[复制链接]
3879|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
昊430|  楼主 | 2020-12-5 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参考网上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端口打印输出调试信息了。

使用特权

评论回复
沙发
小明的同学| | 2020-12-5 17:41 | 只看该作者
他们都是这样的。

使用特权

评论回复
板凳
xixi2017| | 2020-12-5 19:46 | 只看该作者
这是哪个系列

使用特权

评论回复
地板
heisexingqisi| | 2020-12-5 23:37 | 只看该作者
新出的型号吗

使用特权

评论回复
5
qinxingtech| | 2021-9-2 16:36 | 只看该作者
楼主在搞新唐的DALI吗?我这里有项目合作,怎么联系您呢?我的QQ:11901226

使用特权

评论回复
6
qinxingtech| | 2021-9-4 16:20 | 只看该作者
楼主看到帖子能回复一下吗?谢谢楼主。怎么联系楼主呢?

使用特权

评论回复
7
额企鹅企鹅| | 2021-9-29 11:19 | 只看该作者
楼主你好我也是这样做的 也成功了,但是你的串口1的接收中断正常吗?我只要中断一打开,就与printf冲突。导致printf函数失效

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

975

帖子

5

粉丝