嵌入式硬件通信接口協(xié)議-UART(三)快速使用串口及應(yīng)用
一、串口啟用流程
本文引用地址:http://www.ex-cimer.com/article/201812/395787.htm開講前,先找?guī)卓钚酒?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/串口">串口demo程序瞄一眼。
依次有STM32的V3.5標準庫、nRF52832的官方demo以及51核的STC15系列單片機的官方DEMO。
從以上的部分demo例程來看,并結(jié)文章《嵌入式硬件通信接口協(xié)議-UART(一)協(xié)議基礎(chǔ)》的介紹,在啟用串口的時候,需要配置的那幾個參數(shù)有波特率、數(shù)據(jù)位、校驗位、停止位等,從demo的源碼中也是能夠體現(xiàn)出來的。
而略有不同的是,在引腳配置靈活的ARM中,需要針對引腳進行配置。
二、驗證輸入輸出
完成了串口的初始化,即可對輸入輸出進行操作,來驗證串口是否可以正常的發(fā)送和接收數(shù)據(jù)。
一般的,最直接的方式就是向輸出寄存器寫入數(shù)據(jù),就可以讓芯片去完成UART信號輸出到對應(yīng)的引腳上。
如下圖依次有STM32的V3.5標準庫、nRF52832的官方demo以及51核的STC15系列單片機的官方DEMO。
驗證串口的輸出,即在串口初始化成功后,對串口的輸出寄存器寫入數(shù)據(jù),而芯片引腳則使用USB轉(zhuǎn)TTL模塊連接,USB端插入計算機的USB口,利用計算機的串口助手軟件實現(xiàn)對數(shù)據(jù)的收發(fā)。
三、調(diào)試-輸出
開發(fā)調(diào)試過程中,輸出的內(nèi)容基本上就是想查看的變量值、代碼的執(zhí)行位置跟蹤、算法或者某些運算的結(jié)果等等。這些輸出,僅用于調(diào)試階段,而在人機調(diào)試過程中,使用計算機的串口助手軟件進行交互,則輸出的數(shù)據(jù)應(yīng)該便于識讀和判斷。
1. C庫函數(shù)printf格式輸出重定向到串口輸出
輸出串口數(shù)據(jù)過程中,需要向寄存器逐字節(jié)傳入數(shù)據(jù)的,而在傳送之前必不可少的,就是將要發(fā)送的數(shù)據(jù)、字符放到同一個Buffer后,執(zhí)行輪詢的方式傳送直到buffer內(nèi)容全部被傳送。
而這個“放”的過程也是需要做些計算、判斷,尤其是增加必要的字符來描述輸出信息,保證信息的可識讀。
在C標準庫printf函數(shù)就有格式輸出的功能,利用這個接口更便于調(diào)試輸出這個過程。
這就需要將printf函數(shù)重定向到串口輸出上!
實現(xiàn)重定向只需3步:
Options for target選項卡內(nèi)勾選UseMicroLIB
在串口實現(xiàn)的*.c文件內(nèi),將stdio.h文件和stdarg.h文件包含進來
重新定義int fputc函數(shù)的內(nèi)部實現(xiàn)
完成以上3步,即可利用printf函數(shù)來格式化輸出,并且能夠在串口上接收到。
評論