在篇2當(dāng)中,我們已經(jīng)實(shí)現(xiàn)了使用內(nèi)部晶振使主頻達(dá)到72M,使各總線(xiàn)時(shí)鐘也達(dá)到了和使用外部晶振一樣的頻率。
但部分模塊在使用STM32標(biāo)準(zhǔn)庫(kù)時(shí)還是會(huì)有些問(wèn)題,本篇就針對(duì)常用的外設(shè)遇到的問(wèn)題予以說(shuō)明并解決。
首先,串口是我們最常用的外設(shè),在使用內(nèi)部晶振使各總線(xiàn)與使用外部晶振達(dá)到一樣的頻率時(shí),使用串口時(shí)會(huì)存在數(shù)據(jù)收發(fā)亂碼的問(wèn)題。
我們來(lái)分析一下問(wèn)題點(diǎn),因?yàn)榇谠谑褂猛獠烤д駮r(shí),都是正常的,說(shuō)明串口配置是沒(méi)錯(cuò)的。再改為使用內(nèi)部時(shí)鐘后就出現(xiàn)串口異常問(wèn)題,那問(wèn)題一定來(lái)自時(shí)鐘這塊的問(wèn)題,我們通過(guò)代碼仿真看一下。在串口初始化過(guò)程中有和時(shí)鐘相關(guān)的操作,在void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)函數(shù)中。
通過(guò)仿真看一下RCC_ClocksStatus中各總線(xiàn)的時(shí)鐘值,發(fā)現(xiàn)總線(xiàn)時(shí)鐘都不對(duì)
經(jīng)過(guò)對(duì)RCC_GetClocksFreq(&RCC_ClocksStatus)函數(shù)的分析發(fā)現(xiàn),獲取的倍頻系數(shù)竟然是3,這是怎么回事?
通過(guò)看AT32F403A的用戶(hù)手冊(cè)發(fā)現(xiàn),PLL倍頻系數(shù)是兩部分組成的,我們?cè)诳偩€(xiàn)時(shí)鐘初始化時(shí)使用的是倍頻18倍,正好兩部分都用到的,而ST的庫(kù)在取值時(shí)只取了其中的一部分,導(dǎo)致倍頻系數(shù)在計(jì)算時(shí)出現(xiàn)了錯(cuò)誤。
好了,現(xiàn)在問(wèn)題的原因找到了,我們?cè)撛趺唇鉀Q呢?
有兩種方式解決,第一種是改宏定義,使CFGR_PLLMull_Mask能夠完整的取到正確的倍頻系數(shù)(本人沒(méi)有采用這種方式,因?yàn)楸额l系數(shù)不連續(xù),處理起來(lái)比較麻煩,而且容易出現(xiàn)其他調(diào)用問(wèn)題)。
第二種是,不改宏,而是改串口初始化函數(shù),因?yàn)楂@取各總線(xiàn)頻率后用來(lái)計(jì)算波特率,我們?nèi)藶閷⒂玫降目偩€(xiàn)頻率改成正確的值就行了,我是這么改的。
通過(guò)修改此處,串口通信恢復(fù)正常。串口問(wèn)題就此解決。
注意:其他外設(shè)如果也有通過(guò)獲取總線(xiàn)時(shí)鐘用于計(jì)算的,都要注意這個(gè)問(wèn)題!!!
接著我們要處理個(gè)很容易忽略的問(wèn)題,那就是FLASH問(wèn)題,這里要說(shuō)的不是廠家手冊(cè)里說(shuō)過(guò)的零等待啊,F(xiàn)LASH延時(shí)等問(wèn)題。而是頁(yè)大小問(wèn)題,這個(gè)問(wèn)題不是在所以的AT32F403A替換STM32F103系列都會(huì)遇到的問(wèn)題。
我們先來(lái)看看STM32F103系列FLASH頁(yè)大小的定義。
? ?
我們?cè)賮?lái)看看AT32F403A系列FLASH頁(yè)大小的定義。
在使用AT32F403A替換STM32F103系列小容量和中容量時(shí),由于頁(yè)大小定義不同,在進(jìn)行FLASH操作時(shí)要注意頁(yè)大小問(wèn)題,此問(wèn)題多會(huì)出現(xiàn)在IAP,或?qū)LASH用于存儲(chǔ)數(shù)據(jù)時(shí)會(huì)出現(xiàn)問(wèn)題,而STM32F103大容量和互聯(lián)型者不會(huì)有問(wèn)題。
至此,我在使用AT32F403A替換STM32F103過(guò)程中遇到的問(wèn)題就都介紹完了,如果在后續(xù)使用過(guò)程中再發(fā)現(xiàn)其他問(wèn)題,請(qǐng)點(diǎn)擊下方圖片打開(kāi)問(wèn)個(gè)芯小程序進(jìn)行咨詢(xún)哦
本文來(lái)自創(chuàng)易棧平臺(tái)用戶(hù)@峰@投稿
審核編輯:湯梓紅
-
STM32
+關(guān)注
關(guān)注
2270文章
10915瀏覽量
356774 -
移植
+關(guān)注
關(guān)注
1文章
380瀏覽量
28155 -
STM32F103
+關(guān)注
關(guān)注
33文章
478瀏覽量
63733 -
MDK
+關(guān)注
關(guān)注
4文章
209瀏覽量
32106 -
USART
+關(guān)注
關(guān)注
1文章
195瀏覽量
30912
原文標(biāo)題:STM32F103移植到AT32F403A之MDK(三)
文章出處:【微信號(hào):創(chuàng)易棧,微信公眾號(hào):創(chuàng)易棧】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論