完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
参考网上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端口打印输出调试信息了。 |
|
相关推荐
1个回答
|
|
因此,问题可能出在使用了错误的函数重定向方法,或者在没有正确配置UUART1模块的时候直接使用了printf()函数,导致没有输出到调试串口。建议检查当前使用的重定向方法是否适用于UUART1模块,同时确认UUART1模块的初始化配置正确。可以参考相关文档或者从硬件逐步调试的角度进行排查。
|
|
|
|
只有小组成员才能发言,加入小组>>
702 浏览 0 评论
1111 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2654 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
656浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
785浏览 6评论
632浏览 5评论
672浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 15:11 , Processed in 1.008218 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号