打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MCU调试系统核心:重定向Printf()接口
车规级MCU开发,不像PC端,包含stdio.h头文件就可以使用Printf()函数。为了实现PC端Printf()接口功能,需要在MCU端实现Printf()接口的"重定向"。所谓的重定向,就是重新定义Printf()接口函数里调用的与输出设备相关的函数,eg:使用Printf()接口将MCU中的信息,通过串口或者Ethernet输出到终端上位机。

所以,如果要实现Printf()接口的重定向,选择合适的MCU驱动是第一步,本文选择UART(Universal Asynchronous Receiver-Transmitter)实现Printf()接口的重定向,讨论如何实现Printf()接口重定向到UART。

1、UART驱动实现

对于UART驱动的实现,根据芯片类型而定。本文使用TC397,文末给出源码,不做具体讨论。

2、重定向Printf()

重定向Printf()接口,本文重新命名为Debugger_printf(),在Debugger_printf()接口中调用UART驱动发送接口sendUARTMessage(),Debugger_printf()接口代码示意如下:

(一)<stdarg.h>头文件

Debugger_printf()接口中需要包含<stdarg.h>头文件,因为在如上代码中使用到了va_list,而宏va_list在<stdarg.h>头文件中定义。<stdarg.h>头文件并不在工程文件中,而是在Mingw64编译环境库中,示意如下:

除了宏va_list之外,使用到的va_start(v,l)、va_end(v)等也在<stdarg.h>头文件中。

3、Debugger_printf()使用

完成Debugger_printf()接口重定向以后,即可在程序任意需要输出信息的位置打印log,之后在串口终端中显示信息。eg:在main线程中打印信息,代码示意如下:

输出的log信息如下所示:

4、源码链接

源码链接如下所示:
https://github.com/Kaixinguo2021/Tasking_TC397_Debugger_UART.git
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
浅谈嵌入式软件开发之重定向标准输入输出设备使用printf()函数格式化输出调试信息(基于S32DS...
解放串口之重定向printf输出到IAR虚拟终端
stm32串口重定向printf
printf()是如何与UART外设驱动函数“勾搭”起来的?
C库函数重定向c基础知识
STM32中使用HAL库重定向printf()函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服