0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AT32 MCU Printf的功能使用方法

jf_pJlTbmA9 ? 來(lái)源:AT32 MCU 雅特力科技 ? 作者:AT32 MCU 雅特力科技 ? 2023-10-27 09:27 ? 次閱讀

內(nèi)容概述

本文檔主要介紹AT芯片在Keil和IAR兩種工程環(huán)境下的printf功能使用方法。其共包含如下表統(tǒng)計(jì)的6種方法,各方法的具體用法在具體內(nèi)容中描述。

wKgZomUD6H-AKtnyAAFtltbm3Po909.png 表1. AT芯片的printf函數(shù)使用方法匯總

具體內(nèi)容

IAR環(huán)境下經(jīng)Terminal I/O虛擬終端輸出

簡(jiǎn)介

IAR提供的鏈接到其Terminal的驅(qū)動(dòng)內(nèi)就包含有常用的scanf和printf等標(biāo)準(zhǔn)輸入輸出驅(qū)動(dòng)函數(shù),所以工程文件可直接經(jīng)IAR自帶的Terminal I/O窗口實(shí)現(xiàn)信息交互。

例程路徑

001_Printf_Test_IAR_Terminalprojectiar_v8.2

環(huán)境及硬件設(shè)計(jì)

1) 環(huán)境

本方法需在IAR環(huán)境下使用,例程支持的編譯環(huán)境為IAR_V8,硬件電路板為AT-START-F403A_V1.2。

2) 硬件連接

Link/AT-Link ...connection

wKgZomUD6ICACUIHAAChXqQ2bI0447.png 表2. 硬件連接關(guān)系表--(無(wú)JTDO)

軟件設(shè)計(jì)

1) 頭文件

代碼工程文件內(nèi)添加“stdio.h”。

2) 重定向設(shè)定

Printf解除重定向(屏蔽與實(shí)際串口的重定向)。

仿真與下載

代碼經(jīng)編譯后下載到MCU內(nèi),然后進(jìn)入Debug調(diào)試環(huán)境中,經(jīng)View->Terminal I/O(下圖1)調(diào)出虛擬終端,然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口Output欄(下圖1)內(nèi),且在該窗口的Input欄內(nèi)輸入的數(shù)據(jù)也同樣會(huì)被打印到Output窗口內(nèi)。

wKgaomUD6IKAXRxmAAFMPXTzcM4887.png 圖1. 虛擬終端窗口路徑
wKgZomUD6IOActTgAACSEFQ5Irw523.png 圖2. 虛擬終端交互窗口

IAR環(huán)境下重定向?yàn)榇谳敵?/strong>

簡(jiǎn)介

將printf函數(shù)重定向到芯片內(nèi)的一組實(shí)際串口,經(jīng)串口TX腳輸出,最后由串口助手工具進(jìn)行信息交互。

例程路徑

002_Printf_Test_IAR_USART2projectiar_v8.2

環(huán)境及硬件設(shè)計(jì)

1) 環(huán)境

本方法需在IAR環(huán)境下使用,例程支持的編譯環(huán)境為IAR_V8,硬件電路板為AT-START-F403A_V1.2。

2) 硬件連接

J-Link/AT-Link ...connection

J-Link/AT-Link ...connection

wKgaomUD6IWAZN6zAACh8UvhVxQ851.png 表3. 硬件連接關(guān)系表--(無(wú)JTDO)

USART2 connection

wKgZomUD6IaAKEg8AABvgPrmRN0011.png 表4. 硬件連接關(guān)系表--(USART)

軟件設(shè)計(jì)

1) 頭文件

代碼工程文件內(nèi)添加“stdio.h”;

2) 重定向設(shè)定

串口初始化并將Printf重定向到實(shí)際的串口,重定向函數(shù)如下

wKgaomUD6IiAO9cYAABitZf4bRo655.png

仿真與下載

代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖3)內(nèi)。

wKgZomUD6ImAf1mxAAFR-SYN3OY343.png 圖3. 串口助手交互窗口

經(jīng)Keil平臺(tái)的Debug(printy) Viewer虛擬終端輸出

簡(jiǎn)介

Keil平臺(tái)自帶有Debug(printf) Viewer接口,在ARM內(nèi)核集成有常用的scanf和printf等標(biāo)準(zhǔn)輸入輸出驅(qū)動(dòng)函數(shù)的前提下,該接口可用于標(biāo)準(zhǔn)的Printf交互。

例程路徑

003_Printf_Test_Keil_JTDOprojectmdk_v5

環(huán)境及硬件設(shè)計(jì)

1) 環(huán)境

本方法需在Keil環(huán)境下使用,例程支持的編譯環(huán)境為Keil_V5,硬件電路板為AT-START-F403A_V1.2

2) 硬件連接

J-Link/AT-Link ...connection

wKgaomUD6IuAISA1AAC-r0BH3u4154.png 表5. 硬件連接關(guān)系表--(含JTDO)

軟件設(shè)計(jì)

1) 頭文件

代碼工程文件內(nèi)添加“stdio.h”;

2) 跟蹤引腳分配

wKgaomUD6IyAKyJZAAA3tV3PMlU211.png

3) Printf映射

wKgZomUD6I2AdqJxAACQPq0jKJY780.png

仿真與下載

勾選如下圖4中的Enable,并設(shè)定Core值,Core值需與系統(tǒng)時(shí)鐘相等。

設(shè)定串口時(shí)鐘,通常通過(guò)勾選如下圖4中的Autodetect max SWO C1來(lái)實(shí)現(xiàn)。當(dāng)出現(xiàn)打印亂碼時(shí),此時(shí)可嘗試不勾選Autodetect max SWO C1,并手動(dòng)修改Prescale Core Clk保證打印信息正常。

隨后即可編譯代碼下載到MCU內(nèi),然后進(jìn)入Debug調(diào)試環(huán)境中,經(jīng)View->Serial Windows->Debug (printf) Viewer(下圖5)調(diào)出虛擬終端窗口,然后運(yùn)行代碼即可看到Hello World被實(shí)際打印到了終端交互窗口(下圖6)內(nèi)。

wKgaomUD6I-ARsW1AAE0Yp_4ETw160.png 圖4. Trace相關(guān)設(shè)定
wKgZomUD6JGASBpjAAN6hJ333pQ565.png 圖5. Keil虛擬終端窗口路徑
wKgZomUD6JKASHTxAACysjXK0NY630.png 圖6. Keil虛擬終端交互窗口

Keil環(huán)境下重定向?yàn)榇谳敵?使用MicroLIB)

簡(jiǎn)介

Keil環(huán)境有自帶一個(gè)MicroLIB庫(kù),其內(nèi)包含一些支持Printf函數(shù)的代碼,在將Printf重定向到串口輸出時(shí),勾選使用MicroLIB后可由串口助手工具進(jìn)行信息交互。

例程路徑

004_Printf_Test_Keil_USART2_MicroLIBprojectmdk_v5

環(huán)境及硬件設(shè)計(jì)

1) 環(huán)境

本方法需在Keil環(huán)境下使用,例程支持的編譯環(huán)境為Keil_V5,硬件電路板為AT-START-F403A_V1.2

2) 硬件連接

J-Link/AT-Link ...connection

wKgaomUD6JOAGdkOAACnES9_zGY770.png 表6. 硬件連接關(guān)系表--(無(wú)JTDO)

USART2 connection

wKgZomUD6JSARDMzAABux4rpgm4768.png 表7. 硬件連接關(guān)系表--(USART)

軟件設(shè)計(jì)

1) 頭文件

代碼工程文件內(nèi)添加“stdio.h”;

2) Printf重定向

wKgaomUD6JaAGl4CAABivJiiKD0803.png

3) MicroLIB設(shè)定

wKgaomUD6JeAPX2AAAMtCIkIuCk659.png 圖7. MicroLIB設(shè)定

仿真與下載

代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖8)內(nèi)。

wKgZomUD6JiAUQfsAAF6MTQphR4020.png 圖8. 串口助手交互窗口

Keil環(huán)境下重定向?yàn)榇谳敵?不使用MicroLIB)

簡(jiǎn)介

Keil環(huán)境有自帶一個(gè)MicroLIB庫(kù),其內(nèi)包含一些支持Printf函數(shù)的代碼。在將Printf重定向到串口輸出時(shí),如果不勾選使用MicroLIB,自行在工程文件內(nèi)添加支持Printf函數(shù)的代碼段,也同樣可由串口助手工具進(jìn)行信息交互。

例程路徑

005_Printf_Test_Keil_USART2__Without_MicroLIBprojectmdk_v5

環(huán)境及硬件設(shè)計(jì)

1) 環(huán)境
2) 硬件連接

J-Link/AT-Link ...connection

wKgaomUD6JqACucLAACn_QtBHYU922.png 表8. 硬件連接關(guān)系表--(無(wú)JTDO)

USART2 connection

wKgZomUD6JuADUbAAAB2PuaOqPk387.png 表9. 硬件連接關(guān)系表--(USART)

軟件設(shè)計(jì)

1) 頭文件

代碼工程文件內(nèi)添加“stdio.h”;

2) Printf 重定向

wKgZomUD6JyAQhENAABH1JqWj_M516.jpg

3) MicroLIB設(shè)定

wKgZomUD6J6AcBWAAAOpkY5L-zk906.png 圖9. MicroLIB設(shè)定

4) Printf函數(shù)支持代碼添加

wKgaomUD6J-AScWPAARw7O95uLE975.png

仿真與下載

代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖10)內(nèi)。

wKgZomUD6KCAZlCdAAGGBFYSur0061.png 圖10. 串口助手交互窗口

經(jīng)JLinkRTT窗口輸出

簡(jiǎn)介

JLink自帶有調(diào)試輸出功能,在添加JLink RTT庫(kù)代碼后,可根據(jù)指定的指令實(shí)現(xiàn)代碼調(diào)試輸出到對(duì)應(yīng)的窗口。

例程路徑

006_Printf_Test_Jlink_RTTprojectmdk_v5

環(huán)境及硬件設(shè)計(jì)

1) 環(huán)境

本方法在IAR及Keil環(huán)境下均可使用,例程支持的編譯環(huán)境為IAR_V8、Keil_V5,硬件電路板為AT-START-F403A_V1.2。

2) 硬件連接

J-Link connection

wKgaomUD6KKACc4LAACgLh35Zz4559.png 表10. 硬件連接關(guān)系表--(無(wú)JTDO)

軟件設(shè)計(jì)

1) 頭文件

代碼工程文件內(nèi)添加“stdio.h”;

2) 添加JLink RTT庫(kù)代碼

分別將JLink RTT庫(kù)代碼中的SEGGER_RTT.c和SEGGER_RTT_printf.c添加到工程文件內(nèi);

根據(jù)編譯環(huán)境選擇添加SEGGER_RTT_Syscalls_IAR.c或SEGGER_RTT_Syscalls_KEIL.c到工程文件內(nèi);

3) 輸出到PC

此時(shí),代碼內(nèi)調(diào)用如下SEGGER_RTT_WriteString或SEGGER_RTT_printf命令即可輸出到PC端

wKgZomUD6KOAO9XJAABHNYHeF0g041.png

仿真與下載

1) 通過(guò)JLinkRTTClient窗口輸出

代碼經(jīng)編譯后下載到MCU內(nèi),然后進(jìn)入Debug調(diào)試環(huán)境中,打開JLink安裝路徑下名稱為JLinkRTTClient的應(yīng)用程序。此時(shí)單步執(zhí)行代碼時(shí)即可看到打印信息被依次輸出到JLinkRTTClient窗口,如下圖11和圖12。

wKgaomUD6KSAFH4WAAVCafWGI4Q651.png 圖11. 代碼工程Debug
wKgZomUD6KaAG0FMAAJyNte6Sl4748.png 圖12. JLinkRTTClient窗口輸出信息

2) 通過(guò)JLinkRTTViewer窗口輸出

代碼經(jīng)編譯后下載到MCU內(nèi),然后打開JLinkRTTViewer窗口,如下圖13。

wKgaomUD6KeAITNNAADtOmhEXXw093.png 圖13. 打開JLinkRTTViewer窗口

點(diǎn)擊OK,并在彈出的窗口再點(diǎn)擊OK,然后在彈出的窗口輸入并選擇如下信息(此處以ZE系列為例),并點(diǎn)擊OK。如下圖14

wKgaomUD6KiARB7DAADejCJ9_LY631.png 圖14. device選擇窗口

拿前述代碼進(jìn)入Debug調(diào)試環(huán)境中,此時(shí)單步執(zhí)行代碼時(shí)即可看到打印信息被依次輸出到JLinkRTTViewer窗口。如下圖15

wKgZomUD6KqAY0JyAAFrY6INcu0844.png 圖15. JLinkRTTViewer窗口輸出信息

注意事項(xiàng)

前述具體內(nèi)容2.3和2.6的測(cè)試時(shí),只能用J-Link,AT-Link暫不支持;

前述具體內(nèi)容2.1和具體內(nèi)容2.2的測(cè)試時(shí),如果使用AT-Link的話,工程內(nèi)Options→CMSIS DAP→Reset選項(xiàng)必須選擇為Hardware或者System,不然無(wú)法連接及下載代碼;

前述具體內(nèi)容2.2的測(cè)試時(shí),工程內(nèi)Options→General Options→Library Configuration→Library選項(xiàng)必須選擇為Full,不然無(wú)法正常輸出。因?yàn)橹挥羞x擇為Full時(shí),支持Printf函數(shù)的代碼才會(huì)被包含進(jìn)來(lái)。

前述具體內(nèi)容2.6.5.1測(cè)試時(shí),因輸出窗口應(yīng)用程序暫時(shí)無(wú)法指定芯片型號(hào),為保證代碼與窗口型號(hào)匹配且輸出正常,目前工程內(nèi)Device須選擇ST的型號(hào)。且工程代碼內(nèi)必須要勾選“Options”內(nèi)的“Use MicroLIB”,不然代碼編譯可能會(huì)出現(xiàn)異常。

來(lái)源:AT32 MCU 雅特力科技
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17475

    瀏覽量

    354616
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    13820
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用AT32 MCU實(shí)現(xiàn)OTP寄存器功能

    對(duì)于AT32 MCU不同的系列,因?yàn)?b class='flag-5'>功能改進(jìn)等原因,安全庫(kù)區(qū)的配置使用可能有所差異。用戶使用OTP功能主要目的是需要將一些特殊數(shù)據(jù)保存其中,在需要時(shí)可以讀取,并且不允許修改和擦除。目前
    發(fā)表于 07-08 12:49 ?1483次閱讀

    AN0002—AT32 MCU如何使用片上Flash來(lái)實(shí)現(xiàn)EEPROM功能

    的補(bǔ)充。本文檔將詳細(xì)闡述在 AT32 系列 MCU 上使用片上 Flash 來(lái)模擬 EEPROM 的應(yīng)用原理和軟件使用方法。Flash 與 EEPROM 的不同 以應(yīng)用的角度來(lái)看,F(xiàn)lash
    發(fā)表于 08-15 14:23

    AT32系列MCU上Flash模擬EEPRO的應(yīng)用原理和使用方法

    AN0002—AT32 MCU如何使用片上Flash來(lái)實(shí)現(xiàn)EEPROM功能當(dāng)前諸多嵌入式應(yīng)用場(chǎng)景都需要用到 EEPROM 作為非易失性的數(shù)據(jù)存儲(chǔ)設(shè)備。出于客戶低成本的考慮,AT32
    發(fā)表于 11-26 07:15

    怎么使用AT32 MCU的SPIM作為外部存儲(chǔ)器的擴(kuò)展功能

    AT32 SPIM Application Note描述了怎么使用AT32 MCU的SPIM作為外部存儲(chǔ)器的擴(kuò)展功能
    發(fā)表于 10-24 08:03

    GUIX移植到AT32 MCU的過(guò)程和方法

    本應(yīng)用筆記主要演示GUIX移植到AT32 MCU的過(guò)程和方法。本應(yīng)用筆記在ThreadX OS基礎(chǔ)上進(jìn)行講解,因此建議閱讀者先看AT32的如下應(yīng)用指南:AN0079_AT32_
    發(fā)表于 10-25 07:51

    AT32 MCU USB主機(jī)庫(kù)應(yīng)用說(shuō)明

    AT32 MCU USB Host Library Application Note主要描述AT32F4xx 系列USB 主機(jī)庫(kù)的架構(gòu)和使用方法,方便開發(fā)者使用庫(kù)快速開發(fā)USB相關(guān)的應(yīng)用,同時(shí)也會(huì)介紹
    發(fā)表于 10-25 07:02

    AT32 MCU USB設(shè)備庫(kù)應(yīng)用說(shuō)明

    AT32 MCU USB Device Library Application Note主要描述AT32F4xx 系列USB 設(shè)備庫(kù)的架構(gòu)和使用方法,方便開發(fā)者使用庫(kù)快速開發(fā)USB相關(guān)的應(yīng)用,同時(shí)也會(huì)介紹
    發(fā)表于 10-25 07:07

    AT32 MCU USART應(yīng)用說(shuō)明

    AT32 MCU USART Application Note介紹了AT32 的USART 功能,并對(duì)BSP 例程的軟件設(shè)計(jì)加以說(shuō)明,同時(shí)演示使用方
    發(fā)表于 10-25 08:11

    AT32外部中斷/事件EXINT使用指南

    AT32外部中斷/事件EXINT使用指南介紹AT32 系列MCU 的EXINT 功能及其固件驅(qū)動(dòng)程序API,并對(duì)BSP 例程的軟件設(shè)計(jì)加以說(shuō)明,同時(shí)演示
    發(fā)表于 10-25 06:25

    AN0002—AT32 MCU如何使用片上Flash來(lái)實(shí)現(xiàn)EEPROM功能

    型號(hào)的 MCU 并未搭載片上 EEPROM,但是在此我們將介紹一種使用片上 Flash來(lái)模擬 EEPROM 使用的方法,以作為對(duì)此應(yīng)用需求的補(bǔ)充。本文檔將詳細(xì)闡述在 AT32 系列 MCU
    發(fā)表于 11-18 16:21 ?14次下載
    AN0002—<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用片上Flash來(lái)實(shí)現(xiàn)EEPROM<b class='flag-5'>功能</b>

    雅特力AT32 MCU USB設(shè)備庫(kù)的架構(gòu)和使用方法

    這部分主要介紹AT32 USB設(shè)備庫(kù)的結(jié)構(gòu)和庫(kù)的使用方法,AT32 USB是基于USB2.0全速設(shè)備,不支持USB2.0高速設(shè)備。這里庫(kù)的作用是用來(lái)管理USB外設(shè)和實(shí)現(xiàn)USB的基本協(xié)議,使開發(fā)者能夠更快的上手開發(fā)。
    的頭像 發(fā)表于 02-22 10:09 ?2526次閱讀

    AT32講堂006 | AT32 MCU Printf功能使用方法

    內(nèi)容概述本文檔主要介紹AT芯片在Keil和IAR兩種工程環(huán)境下的printf功能使用方法。其共包含如下表統(tǒng)計(jì)的6種方法,各方法的具體用法在具體內(nèi)容中描述。表1.AT芯片的
    的頭像 發(fā)表于 06-16 09:44 ?2327次閱讀
    <b class='flag-5'>AT32</b>講堂006 | <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>Printf</b>的<b class='flag-5'>功能使用方法</b>

    如何使用AT32 MCU WDT和WWDT?

    如何使用AT32 MCU WDT和WWDT?
    的頭像 發(fā)表于 11-10 18:26 ?2428次閱讀
    如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> WDT和WWDT?

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的頭像 發(fā)表于 11-01 17:18 ?4163次閱讀
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU<b class='flag-5'>功能</b>

    OTG功能使用方法

    OTG功能使用方法? 什么是OTG功能? OTG(On-The-Go)即為“即插即用”的高速USB接口,在目前的市場(chǎng)上企業(yè)和普通消費(fèi)者極度青睞,其在人們的生活中的應(yīng)用場(chǎng)景非常廣泛,比如U盤、鍵盤
    的頭像 發(fā)表于 10-30 09:57 ?5197次閱讀