STM32F103C8T6-CubeMx串口收發(fā)程序詳細(xì)設(shè)計與測試(1)——CubeMx生成初始代碼

STM32F103C8T6-CubeMx串口收發(fā)程序詳細(xì)設(shè)計與測試(1)——CubeMx生成初始代碼

關(guān)鍵詞:STM32F103C8T6 CubeMX UART 詳細(xì)程序設(shè)計

1.開發(fā)環(huán)境

(1)STM32CubeMX,版本:4.27.0,截止寫稿時,最新版本已到6.0.1,但孔丙火(微信公眾號:孔丙火)實(shí)在是用不習(xí)慣版本5以后的界面,所以還繼續(xù)用4版本的。

圖1-1

(2)MDK(Keil),版本:5.17,有部分朋友用的還是4版本的,建議升級到5,在5下裝一個兼容包,就可以用5打開4版本的程序。

2.CubeMx配置及代碼生成

(1)新建CubeMX工程

孔丙火(微信公眾號:孔丙火)認(rèn)為,這一步比較簡單,點(diǎn)擊初始界面中的New Project,在后面出現(xiàn)的配置窗口中,搜索STM32F103C8,選擇這個器件,然后點(diǎn)擊Start Project就可以了。

(2)按照圖1-2和1-3設(shè)置外設(shè)和端口。

圖1-2
圖1-3

(3)按照圖1-4配置系統(tǒng)時鐘

我用的是12M的外部晶振,圖中兩個紅框處配置一下,其他按照默認(rèn)即可。注意一下APB1 Timer clocks的值是多少,這個在后面配置定時器時需要用到,原因見圖1-5,TIM2使用的是APB1的時鐘。

圖1-4
圖1-5

(4)USART1和TIM2的參數(shù)配置,見圖1-6。

UART的參數(shù)配置見圖1-7,需要注意word length這一選項,括號里有個including parity,意思是說包含奇偶校驗(yàn)位,孔丙火(微信公眾號:孔丙火)要著重強(qiáng)調(diào)一下,如果是無校驗(yàn),那這個參數(shù)就是數(shù)據(jù)長度,如果是奇校驗(yàn)或偶校驗(yàn),那個這個參數(shù)就是實(shí)際的數(shù)據(jù)長度+1,這個不要弄錯了,否則通信會出問題。圖1-8中的那個USART的中斷要打勾,已啟用中斷。

圖1-6
圖1-7
圖1-8

圖1-9

圖1-9是TIM2的參數(shù)設(shè)置,設(shè)置每個計時周期為50us,TIM2采用的是APB1的時鐘,即12MHz,則計算公式為:

,x為Prescaler的數(shù)值+1,可以計算得到:x = 600,Counter Period設(shè)為35-1,則TIM2每進(jìn)一次中斷的周期為:1750us,之所以這樣設(shè)置,孔丙火(微信公眾號:孔丙火)主要是為以后的Modbus設(shè)計做準(zhǔn)備。圖1-10中的TIM2的紅框需要打勾,以啟用TIM2的中斷。

圖-10
圖1-11

完成以上設(shè)置后,點(diǎn)開STM32CubeMx的project settings選項,按照圖1-11和圖1-12的提示設(shè)置。然后按照圖1-13的提示生產(chǎn)即可生產(chǎn)工程代碼,孔丙火(微信公眾號:孔丙火)使用的是MDK V5。使用V4版本的朋友建議升級到V5,看到有的朋友使用V5時帶不開V4的工程,只要裝一個兼容包,就可以了,不會弄的朋友可以在公眾號留言。

圖1-12
圖1-13

更多相關(guān)及后續(xù)內(nèi)容,請關(guān)注微信公眾號:孔丙火查看。

\color{red}{文章在微信公眾號同步推出,微信公眾號:孔丙火,關(guān)注欣賞更多文章。}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容