1842|0

43

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【雅特力AT32WB415评测】4. AT32 IDE下printf的实现(printf重定向) [复制链接]

接着上3篇评测报告:

(1)https://bbs.eeworld.com.cn/thread-1214040-1-1.html

(2)https://bbs.eeworld.com.cn/thread-1214570-1-1.html

(3)https://bbs.eeworld.com.cn/thread-1215784-1-1.html

 

原来一直在MDK环境下使用printf很方便,网上的参考资料也很多。这次拿到AT32WB415评估板后,使用官方AT32 IDE进行开发,刚开始天真的以为也跟MDK一样,可以直接使用,在main中添加如下代码:

  ,编译一次通过,   ,然后把迫不及待把*.hex文件下载到评估板上,打开串口调试工具,发现并没有打出printf的“Hello”信息。这才恍然大悟,AT32 IDE下使用printf也不简单。

溯源发现程序中使用的printf

  的stdio.h文件位于   ,而MDK环境中stdio.h文件位于   ,MDK可以正常使用printf,突发奇想,直接把MDK中调用的stdio.h文件,覆盖AT32 IDE环境下调用的stdio.h文件。结果发现还是不行。

于是开始百度并发帖求助,找了2天也没有找到合适的解决方法,于是就开始了自己的摸索过程。

查了很多资料,都说需要printf重定向。研究源码发现,在

  文件中实现了将C库中的printf函数retargets到USART上,如图40所示。

 图40 at32wb415_board.c源码

 

但是通过验证,这段代码没有执行。

然后,开始考虑将以前兆易(GD)环境下使用的

  拷过来使用,   ,并根据AT32 IDE新建工程时生成的宏定义参数进行修改,例如:USART_TDBE_FLAG   。这些USART FLAG宏定义在USART头文件中   ,如图41所示。 图41 USART头文件中FLAG宏定义

 

USART_TDBE_FLAG:USART发送数据Buffer空标志。

最后,可以在main.c文件中添加

  ,实现对串口收发数据应如何缓冲的设置,如果不设置则采用默认情况(测试了一下默认情况肯定不是_IOFBF全缓冲模式)。

关于setvbuf函数的详细介绍请参阅参考资料[4] C库函数-setvbuf。

 

雅特力AT32WB415开发板-评测报告-施连敏-20220806-0901.pdf (2.76 MB, 下载次数: 4)
newlib_stubs.c (6.21 KB, 下载次数: 8)
此帖出自无线连接论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表