內(nèi)容概述
本文檔主要介紹AT芯片在Keil和IAR兩種工程環(huán)境下的printf功能使用方法。其共包含如下表統(tǒng)計(jì)的6種方法,各方法的具體用法在具體內(nèi)容中描述。
表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
表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)。
圖1. 虛擬終端窗口路徑
圖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
表3. 硬件連接關(guān)系表--(無(wú)JTDO)
USART2 connection
表4. 硬件連接關(guān)系表--(USART)
軟件設(shè)計(jì)
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) 重定向設(shè)定
串口初始化并將Printf重定向到實(shí)際的串口,重定向函數(shù)如下
仿真與下載
代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖3)內(nèi)。
圖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
表5. 硬件連接關(guān)系表--(含JTDO)
軟件設(shè)計(jì)
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) 跟蹤引腳分配
3) Printf映射
仿真與下載
勾選如下圖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)。
圖4. Trace相關(guān)設(shè)定
圖5. Keil虛擬終端窗口路徑
圖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
表6. 硬件連接關(guān)系表--(無(wú)JTDO)
USART2 connection
表7. 硬件連接關(guān)系表--(USART)
軟件設(shè)計(jì)
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) Printf重定向
3) MicroLIB設(shè)定
圖7. MicroLIB設(shè)定
仿真與下載
代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖8)內(nèi)。
圖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
表8. 硬件連接關(guān)系表--(無(wú)JTDO)
USART2 connection
表9. 硬件連接關(guān)系表--(USART)
軟件設(shè)計(jì)
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) Printf 重定向
3) MicroLIB設(shè)定
圖9. MicroLIB設(shè)定
4) Printf函數(shù)支持代碼添加
仿真與下載
代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運(yùn)行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖10)內(nèi)。
圖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
表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端
仿真與下載
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。
圖11. 代碼工程Debug
圖12. JLinkRTTClient窗口輸出信息
2) 通過(guò)JLinkRTTViewer窗口輸出
代碼經(jīng)編譯后下載到MCU內(nèi),然后打開JLinkRTTViewer窗口,如下圖13。
圖13. 打開JLinkRTTViewer窗口
點(diǎn)擊OK,并在彈出的窗口再點(diǎn)擊OK,然后在彈出的窗口輸入并選擇如下信息(此處以ZE系列為例),并點(diǎn)擊OK。如下圖14
圖14. device選擇窗口
拿前述代碼進(jìn)入Debug調(diào)試環(huán)境中,此時(shí)單步執(zhí)行代碼時(shí)即可看到打印信息被依次輸出到JLinkRTTViewer窗口。如下圖15
圖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)行處理
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
146文章
17475瀏覽量
354616 -
Printf
+關(guān)注
關(guān)注
0文章
83瀏覽量
13820
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用AT32 MCU實(shí)現(xiàn)OTP寄存器功能
AN0002—AT32 MCU如何使用片上Flash來(lái)實(shí)現(xiàn)EEPROM功能
在AT32系列MCU上Flash模擬EEPRO的應(yīng)用原理和使用方法
怎么使用AT32 MCU的SPIM作為外部存儲(chǔ)器的擴(kuò)展功能
GUIX移植到AT32 MCU的過(guò)程和方法
AT32 MCU USB主機(jī)庫(kù)應(yīng)用說(shuō)明
AT32 MCU USB設(shè)備庫(kù)應(yīng)用說(shuō)明
AT32 MCU USART應(yīng)用說(shuō)明
AT32外部中斷/事件EXINT使用指南
AN0002—AT32 MCU如何使用片上Flash來(lái)實(shí)現(xiàn)EEPROM功能

雅特力AT32 MCU USB設(shè)備庫(kù)的架構(gòu)和使用方法
AT32講堂006 | AT32 MCU Printf的功能使用方法

評(píng)論