內(nèi)容概述
本文檔主要介紹AT芯片在Keil和IAR兩種工程環(huán)境下的printf功能使用方法。其共包含如下表統(tǒng)計的6種方法,各方法的具體用法在具體內(nèi)容中描述。表1. AT芯片的printf函數(shù)使用方法匯總
具體內(nèi)容
IAR環(huán)境下經(jīng)Terminal I/O虛擬終端輸出
簡介
IAR提供的鏈接到其Terminal的驅(qū)動內(nèi)就包含有常用的scanf和printf等標(biāo)準(zhǔn)輸入輸出驅(qū)動函數(shù),所以工程文件可直接經(jīng)IAR自帶的Terminal I/O窗口實現(xiàn)信息交互。
例程路徑
001_Printf_Test_IAR_Terminal\project\iar_v8.2
環(huán)境及硬件設(shè)計
1)環(huán)境本方法需在IAR環(huán)境下使用,例程支持的編譯環(huán)境為IAR_V8,硬件電路板為AT-START-F403A_V1.2。2)硬件連接Link/AT-Link&...connection表2. 硬件連接關(guān)系表--(無JTDO)
軟件設(shè)計
1) 頭文件代碼工程文件內(nèi)添加“stdio.h”。2) 重定向設(shè)定Printf解除重定向(屏蔽與實際串口的重定向)。
仿真與下載
代碼經(jīng)編譯后下載到MCU內(nèi),然后進(jìn)入Debug調(diào)試環(huán)境中,經(jīng)View->Terminal I/O(下圖1)調(diào)出虛擬終端,然后全速運行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口Output欄(下圖1)內(nèi),且在該窗口的Input欄內(nèi)輸入的數(shù)據(jù)也同樣會被打印到Output窗口內(nèi)。圖1. 虛擬終端窗口路徑
圖2. 虛擬終端交互窗口
IAR環(huán)境下重定向為串口輸出
簡介
將printf函數(shù)重定向到芯片內(nèi)的一組實際串口,經(jīng)串口TX腳輸出,最后由串口助手工具進(jìn)行信息交互。
例程路徑
002_Printf_Test_IAR_USART2\project\iar_v8.2
環(huán)境及硬件設(shè)計
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)系表--(無JTDO)

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

軟件設(shè)計
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) 重定向設(shè)定
串口初始化并將Printf重定向到實際的串口,重定向函數(shù)如下

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

經(jīng)Keil平臺的Debug(printy) Viewer虛擬終端輸出
簡介
Keil平臺自帶有Debug(printf) Viewer接口,在ARM內(nèi)核集成有常用的scanf和printf等標(biāo)準(zhǔn)輸入輸出驅(qū)動函數(shù)的前提下,該接口可用于標(biāo)準(zhǔn)的Printf交互。
例程路徑
003_Printf_Test_Keil_JTDO\project\mdk_v5
環(huán)境及硬件設(shè)計
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è)計
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;2) 跟蹤引腳分配
3) Printf映射
仿真與下載
勾選如下圖4中的Enable,并設(shè)定Core值,Core值需與系統(tǒng)時鐘相等。
設(shè)定串口時鐘,通常通過勾選如下圖4中的Autodetect max SWO C1來實現(xiàn)。當(dāng)出現(xiàn)打印亂碼時,此時可嘗試不勾選Autodetect max SWO C1,并手動修改Prescale Core Clk保證打印信息正常。
隨后即可編譯代碼下載到MCU內(nèi),然后進(jìn)入Debug調(diào)試環(huán)境中,經(jīng)View->Serial Windows->Debug (printf) Viewer(下圖5)調(diào)出虛擬終端窗口,然后運行代碼即可看到Hello World被實際打印到了終端交互窗口(下圖6)內(nèi)。
圖4. Trace相關(guān)設(shè)定

圖5. Keil虛擬終端窗口路徑

圖6. Keil虛擬終端交互窗口

Keil環(huán)境下重定向為串口輸出(使用MicroLIB)
簡介
Keil環(huán)境有自帶一個MicroLIB庫,其內(nèi)包含一些支持Printf函數(shù)的代碼,在將Printf重定向到串口輸出時,勾選使用MicroLIB后可由串口助手工具進(jìn)行信息交互。
例程路徑
004_Printf_Test_Keil_USART2_MicroLIB\project\mdk_v5
環(huán)境及硬件設(shè)計
1) 環(huán)境
本方法需在Keil環(huán)境下使用,例程支持的編譯環(huán)境為Keil_V5,硬件電路板為AT-START-F403A_V1.2
2) 硬件連接
J-Link/AT-Link&...connection
表6. 硬件連接關(guān)系表--(無JTDO)

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

軟件設(shè)計
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) Printf重定向

3) MicroLIB設(shè)定
圖7. MicroLIB設(shè)定

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

Keil環(huán)境下重定向為串口輸出(不使用MicroLIB)
簡介
Keil環(huán)境有自帶一個MicroLIB庫,其內(nèi)包含一些支持Printf函數(shù)的代碼。在將Printf重定向到串口輸出時,如果不勾選使用MicroLIB,自行在工程文件內(nèi)添加支持Printf函數(shù)的代碼段,也同樣可由串口助手工具進(jìn)行信息交互。
例程路徑
005_Printf_Test_Keil_USART2__Without_MicroLIB\project\mdk_v5
環(huán)境及硬件設(shè)計
1) 環(huán)境本方法需在Keil環(huán)境下使用,例程支持的編譯環(huán)境為Keil_V5,硬件電路板為AT-START-F403A_V1.22) 硬件連接J-Link/AT-Link&...connection表8. 硬件連接關(guān)系表--(無JTDO)
USART2 connection表9. 硬件連接關(guān)系表--(USART)
軟件設(shè)計
1) 頭文件代碼工程文件內(nèi)添加“stdio.h”;2) Printf 重定向
3) MicroLIB設(shè)定圖9. MicroLIB設(shè)定
4) Printf函數(shù)支持代碼添加
仿真與下載代碼經(jīng)編譯后下載到MCU內(nèi),然后全速運行代碼即可看到程序主循環(huán)內(nèi)的“Hello World”等內(nèi)容被打印到了終端交互窗口(下圖10)內(nèi)。圖10. 串口助手交互窗口
經(jīng)JLinkRTT窗口輸出
簡介
JLink自帶有調(diào)試輸出功能,在添加JLink RTT庫代碼后,可根據(jù)指定的指令實現(xiàn)代碼調(diào)試輸出到對應(yīng)的窗口。
例程路徑
006_Printf_Test_Jlink_RTT\project\mdk_v5
環(huán)境及硬件設(shè)計
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)系表--(無JTDO)

軟件設(shè)計
1) 頭文件
代碼工程文件內(nèi)添加“stdio.h”;
2) 添加JLink RTT庫代碼
分別將JLink RTT庫代碼中的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
此時,代碼內(nèi)調(diào)用如下SEGGER_RTT_WriteString或SEGGER_RTT_printf命令即可輸出到PC端
仿真與下載
1) 通過JLinkRTTClient窗口輸出
代碼經(jīng)編譯后下載到MCU內(nèi),然后進(jìn)入Debug調(diào)試環(huán)境中,打開JLink安裝路徑下名稱為JLinkRTTClient的應(yīng)用程序。此時單步執(zhí)行代碼時即可看到打印信息被依次輸出到JLinkRTTClient窗口,如下圖11和圖12。
圖11. 代碼工程Debug

圖12. JLinkRTTClient窗口輸出信息

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

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

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

注意事項
前述具體內(nèi)容2.3和2.6的測試時,只能用J-Link,AT-Link暫不支持;
前述具體內(nèi)容2.1和具體內(nèi)容2.2的測試時,如果使用AT-Link的話,工程內(nèi)Options→CMSIS DAP→Reset選項必須選擇為Hardware或者System,不然無法連接及下載代碼;
前述具體內(nèi)容2.2的測試時,工程內(nèi)Options→General Options→Library Configuration→Library選項必須選擇為Full,不然無法正常輸出。因為只有選擇為Full時,支持Printf函數(shù)的代碼才會被包含進(jìn)來。
前述具體內(nèi)容2.6.5.1測試時,因輸出窗口應(yīng)用程序暫時無法指定芯片型號,為保證代碼與窗口型號匹配且輸出正常,目前工程內(nèi)Device須選擇ST的型號。且工程代碼內(nèi)必須要勾選“Options”內(nèi)的“Use MicroLIB”,不然代碼編譯可能會出現(xiàn)異常。
關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達(dá)、工業(yè)縫紉機、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。
-
mcu
+關(guān)注
關(guān)注
147文章
18924瀏覽量
398008
發(fā)布評論請先 登錄
AT32F011 系列快速使用指南
AT32硬件除法器應(yīng)用指南
如何使用AT32 EdgeAI Sensor EV Board
AT32開源鴻蒙開發(fā)環(huán)境搭建
國產(chǎn)MCU替代優(yōu)選!雅特力AT32系列憑高性能+高兼容,橫掃工控/消費/AIoT多場景
雅特力AT32 MCU推動低空經(jīng)濟(jì)發(fā)展
rtt 5.2.0 menuconfig報錯的原因?
SPI主機/從機接收發(fā)送都開啟DMA通信
AT32 MCU如何使用IAP
錫膏的儲存及使用方法詳解
AT32 IAP using the USART
AT32的ERTC與RTC的區(qū)別
泰克TBS1102X示波器FFT功能使用指南
LCR測試儀的使用方法與注意事項
首日速遞 | 雅特力閃耀2025慕尼黑上海電子展,全方位展現(xiàn)智能“芯”實力
AT32講堂006 | AT32 MCU Printf的功能使用方法
評論