衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何實現Printf()接口重定向到UART

CHANBAEK ? 來源:開心果 Need Car ? 作者:開心果 Need Car ? 2023-10-01 10:13 ? 次閱讀

車規級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()接口代碼示意如下:

圖片

(一)頭文件

Debugger_printf()接口中需要包含頭文件,因為在如上代碼中使用到了va_list,而宏va_list在頭文件中定義。頭文件并不在工程文件中,而是在Mingw64編譯環境庫中,示意如下:

圖片

除了宏va_list之外,使用到的va_start(v,l)、va_end(v)等也在頭文件中。

3、Debugger_printf()使用

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

圖片

輸出的log信息如下所示:

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17317

    瀏覽量

    352640
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151915
  • uart
    +關注

    關注

    22

    文章

    1243

    瀏覽量

    101768
  • 代碼
    +關注

    關注

    30

    文章

    4825

    瀏覽量

    69046
  • Printf
    +關注

    關注

    0

    文章

    83

    瀏覽量

    13732
收藏 人收藏

    評論

    相關推薦

    STM32使用串口重定向系統

    STM32使用串口重定向系統printf函數輸出時出現一初始化或使用printf函數系統卡死的原因及解決辦法在STM32開發當中,會經常使用系統自帶的printf函數來查看調試輸出,通
    發表于 08-24 08:19

    實現printf函數的重定向

    目錄重定向函數屬性設置重定向函數在配置好串口之后需要在相關文件中添加以下函數以實現printf函數的重定向//注意添加頭文件#include
    發表于 08-24 07:09

    如何實現printf()函數與scanf()的串口重定向

    如何實現printf()函數與scanf()的串口重定向
    發表于 12-01 07:01

    STM32使用串口重定向printf打印時程序不執行是為啥呢?

    STM32使用串口重定向printf打印時程序不執行是為啥呢?
    發表于 12-01 07:56

    如何利用STM32F4串口重定向Printf()?

    如何利用STM32F4串口重定向Printf()?
    發表于 12-01 07:32

    如何將串口重定向printf函數呢

    如何將串口重定向printf函數呢?有哪些操作流程呢?
    發表于 12-01 06:01

    如何去實現STM32 printf的串口重定向

    如何去實現STM32 printf的串口重定向呢?有哪些操作流程?
    發表于 12-01 07:03

    如何去實現printf()函數與scanf()的串口重定向

    如何去實現printf()函數與scanf()的串口重定向呢?有哪些操作流程呢?
    發表于 12-02 07:29

    怎么去解決STM32串口重定向printf出現FILE未定義的問題呢

    怎么去解決STM32串口重定向printf出現FILE未定義的問題呢?
    發表于 12-02 07:34

    printf()函數重定向LCD怎么實現

    printf()函數也可以 重定向LCD嗎?把printf()函數重定向LCD怎么
    發表于 12-02 06:01

    口重定向是什么意思?

    口重定向是什么意思?
    發表于 12-08 06:57

    如何去實現STM32的串口重定向

    UART是什么?如何去實現STM32的串口重定向呢?
    發表于 02-18 06:48

    使用printf()函數時默認UART0輸出,請教如何重定向printf()UART1?

    芯片:N76E003; 編譯環境:keil5 使用printf()函數時默認UART0輸出,請教如何重定向printf()
    發表于 06-25 07:12

    實現重定向printf()和scanf() 函數案例分析

    要想printf()和scanf() 函數工作,我們需要把printf()和scanf() 重新定向串口中。重定向是指用戶可以自己重寫C
    發表于 06-23 08:26 ?9321次閱讀
    <b class='flag-5'>實現</b><b class='flag-5'>重定向</b><b class='flag-5'>printf</b>()和scanf() 函數案例分析

    Keil下使用STlink重定向printf的配置

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默認下使用Micro LIB庫,該庫調用 fputs 實現
    發表于 12-27 18:43 ?18次下載
    Keil下使用STlink<b class='flag-5'>重定向</b><b class='flag-5'>printf</b>的配置
    太阳百家乐官网开户| 金榜百家乐官网娱乐城| 百家乐稳赢秘诀教学| 澳门百家乐官网会出千吗| 奇迹百家乐的玩法技巧和规则| 自贡百家乐官网娱乐场开户注册 | 百家乐平注法攻略| 现金百家乐官网信誉| 丽星百家乐的玩法技巧和规则 | 蒙特卡罗国际| 百家乐百家乐技巧| 玩百家乐是否有技巧| 大集汇百家乐官网的玩法技巧和规则 | 百家乐视频游戏视频| 最新百家乐官网网评测排名| 香港六合彩开奖结果网| 大发888游戏客服电话| 如何玩百家乐的玩法技巧和规则| 百家乐什么平台好| 百家乐官网必胜下注法| 玩百家乐技巧看| 百家乐15人桌子| 长赢百家乐官网赌徒| 百家乐官网娱乐平台真人娱乐平台| 大佬百家乐官网现金网| 多彩娱乐城| 百家博国际娱乐城| 新濠国际娱乐| 在线棋牌游戏平台| bet365存| 娱乐城注册送38彩金| 澳门百家乐官网网站| 澳门百家乐要注意啥| 百家乐全讯网娱乐城| 帝豪百家乐利来| 百家乐官网娱乐送白菜| 在线百家乐官网技巧| 百家乐官网庄闲出现几率| 百家乐官网有看牌器吗| 百家乐官网折桌子| 玩百家乐官网怎么能赢吗|