0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F103移植到AT32F403A之MDK(三)

創(chuàng)易棧 ? 來源:創(chuàng)易棧 ? 2023-02-06 10:19 ? 次閱讀

STM32F103移植到AT32F403A詳細(xì)教程

在篇2當(dāng)中,我們已經(jīng)實(shí)現(xiàn)了使用內(nèi)部晶振使主頻達(dá)到72M,使各總線時(shí)鐘也達(dá)到了和使用外部晶振一樣的頻率。

但部分模塊在使用STM32標(biāo)準(zhǔn)庫時(shí)還是會有些問題,本篇就針對常用的外設(shè)遇到的問題予以說明并解決。

首先,串口是我們最常用的外設(shè),在使用內(nèi)部晶振使各總線與使用外部晶振達(dá)到一樣的頻率時(shí),使用串口時(shí)會存在數(shù)據(jù)收發(fā)亂碼的問題。

我們來分析一下問題點(diǎn),因?yàn)榇谠谑褂猛獠烤д駮r(shí),都是正常的,說明串口配置是沒錯(cuò)的。再改為使用內(nèi)部時(shí)鐘后就出現(xiàn)串口異常問題,那問題一定來自時(shí)鐘這塊的問題,我們通過代碼仿真看一下。在串口初始化過程中有和時(shí)鐘相關(guān)的操作,在void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)函數(shù)中。

ec37d23e-a563-11ed-bfe3-dac502259ad0.pngec558964-a563-11ed-bfe3-dac502259ad0.pngec8a200c-a563-11ed-bfe3-dac502259ad0.png

通過仿真看一下RCC_ClocksStatus中各總線的時(shí)鐘值,發(fā)現(xiàn)總線時(shí)鐘都不對

eca8a130-a563-11ed-bfe3-dac502259ad0.png

經(jīng)過對RCC_GetClocksFreq(&RCC_ClocksStatus)函數(shù)的分析發(fā)現(xiàn),獲取的倍頻系數(shù)竟然是3,這是怎么回事?

ecc41d66-a563-11ed-bfe3-dac502259ad0.png

通過看AT32F403A的用戶手冊發(fā)現(xiàn),PLL倍頻系數(shù)是兩部分組成的,我們在總線時(shí)鐘初始化時(shí)使用的是倍頻18倍,正好兩部分都用到的,而ST的庫在取值時(shí)只取了其中的一部分,導(dǎo)致倍頻系數(shù)在計(jì)算時(shí)出現(xiàn)了錯(cuò)誤。

ecdd8030-a563-11ed-bfe3-dac502259ad0.pngecfde730-a563-11ed-bfe3-dac502259ad0.png

好了,現(xiàn)在問題的原因找到了,我們該怎么解決呢?

有兩種方式解決,第一種是改宏定義,使CFGR_PLLMull_Mask能夠完整的取到正確的倍頻系數(shù)(本人沒有采用這種方式,因?yàn)楸额l系數(shù)不連續(xù),處理起來比較麻煩,而且容易出現(xiàn)其他調(diào)用問題)。

ed54a75a-a563-11ed-bfe3-dac502259ad0.pnged83783c-a563-11ed-bfe3-dac502259ad0.png

第二種是,不改宏,而是改串口初始化函數(shù),因?yàn)楂@取各總線頻率后用來計(jì)算波特率,我們?nèi)藶閷⒂玫降目偩€頻率改成正確的值就行了,我是這么改的。

edc6b7aa-a563-11ed-bfe3-dac502259ad0.png

通過修改此處,串口通信恢復(fù)正常。串口問題就此解決。

注意:其他外設(shè)如果也有通過獲取總線時(shí)鐘用于計(jì)算的,都要注意這個(gè)問題?。。?/strong>

接著我們要處理個(gè)很容易忽略的問題,那就是FLASH問題,這里要說的不是廠家手冊里說過的零等待啊,F(xiàn)LASH延時(shí)等問題。而是頁大小問題,這個(gè)問題不是在所以的AT32F403A替換STM32F103系列都會遇到的問題。

我們先來看看STM32F103系列FLASH頁大小的定義。

edfa79b4-a563-11ed-bfe3-dac502259ad0.png ? ?

我們再來看看AT32F403A系列FLASH頁大小的定義。

ee305e58-a563-11ed-bfe3-dac502259ad0.png

在使用AT32F403A替換STM32F103系列小容量和中容量時(shí),由于頁大小定義不同,在進(jìn)行FLASH操作時(shí)要注意頁大小問題,此問題多會出現(xiàn)在IAP,或?qū)LASH用于存儲數(shù)據(jù)時(shí)會出現(xiàn)問題,而STM32F103大容量和互聯(lián)型者不會有問題。

至此,我在使用AT32F403A替換STM32F103過程中遇到的問題就都介紹完了,如果在后續(xù)使用過程中再發(fā)現(xiàn)其他問題,請點(diǎn)擊下方圖片打開問個(gè)芯小程序進(jìn)行咨詢哦

本文來自創(chuàng)易棧平臺用戶@峰@投稿

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10847

    瀏覽量

    353818
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    375

    瀏覽量

    28076
  • STM32F103
    +關(guān)注

    關(guān)注

    33

    文章

    475

    瀏覽量

    63356
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    207

    瀏覽量

    31992
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30740

原文標(biāo)題:STM32F103移植到AT32F403A之MDK(三)

文章出處:【微信號:創(chuàng)易棧,微信公眾號:創(chuàng)易?!繗g迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AT32F403A如何使用DMA彈性映射?

    ,固定映射的存在,主要的目的是為了兼容STM32F103,彈性映射則提供了更為靈活的通道與數(shù)據(jù)流的選擇下圖是AT32F403A的DMA 1的請求表,這種方式和我們之前熟悉的STM32F103的DMA
    發(fā)表于 11-25 19:18

    為什么項(xiàng)目代碼無法移植AT32F403A芯片上呢

    AT32F403A這款芯片據(jù)說和STM32是一毛一樣的,最近在將項(xiàng)目代碼直接移植這款芯片是出現(xiàn)了兩個(gè)問題,一個(gè)是字庫芯片不能使用,另一個(gè)是PA0喚醒按鍵無法正常喚醒,這里記錄下一自己
    發(fā)表于 01-21 12:43

    盤古STM32F103開發(fā)板移植uCOS-II詳細(xì)說明

    盤古STM32F103開發(fā)板移植uCOS-II詳細(xì)說明
    發(fā)表于 03-02 17:29 ?13次下載

    如何使用MDK5.0建立STM32F103工程

    如何使用MDK5.0建立STM32F103工程
    發(fā)表于 07-20 08:55 ?0次下載

    盤古STM32F103開發(fā)板移植uCGUI教程

    盤古STM32F103開發(fā)板移植uCGUI教程
    發(fā)表于 09-29 09:21 ?21次下載
    盤古<b class='flag-5'>STM32F103</b>開發(fā)板<b class='flag-5'>移植</b>uCGUI教程

    STM32F103使用總結(jié)

    STM32F103使用總結(jié)
    發(fā)表于 10-24 10:22 ?152次下載

    stm32f103移植

    stm32f103移植
    發(fā)表于 10-27 09:03 ?43次下載
    <b class='flag-5'>stm32f103</b><b class='flag-5'>移植</b>

    TencentOS tiny 移植STM32F103全教程(基于標(biāo)準(zhǔn)庫)

    TencentOS tiny 移植STM32F103全教程(基于標(biāo)準(zhǔn)庫)
    發(fā)表于 11-23 18:06 ?16次下載
    TencentOS tiny <b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32F103</b>全教程(基于標(biāo)準(zhǔn)庫)

    STM32F103學(xué)習(xí)筆記 串口通信

    STM32F103學(xué)習(xí)筆記 串口通信
    發(fā)表于 11-25 09:06 ?71次下載
    <b class='flag-5'>STM32F103</b>學(xué)習(xí)筆記<b class='flag-5'>三</b>   串口通信

    在GD32F103移植STM32F103代碼

    在GD32F103移植STM32F103代碼使用相同F(xiàn)LASH和管腳數(shù)量相同的芯片,例如GDF103C8T6移植
    發(fā)表于 12-02 15:21 ?23次下載
    在GD32<b class='flag-5'>F103</b><b class='flag-5'>移植</b><b class='flag-5'>STM32F103</b>代碼

    GD32F103STM32F103的區(qū)別 2021.6.2

    GD32F103STM32F103區(qū)別介紹關(guān)鍵詞Key words:GD32F103STM32F103摘要Abstract:本文主要是GD32F
    發(fā)表于 12-08 11:06 ?82次下載
    GD32<b class='flag-5'>F103</b>與<b class='flag-5'>STM32F103</b>的區(qū)別 2021.6.2

    華為LiteOS系統(tǒng)移植STM32F103開發(fā)板(基于MDK環(huán)境)

    華為LiteOS系統(tǒng)移植STM32F103開發(fā)板(基于MDK環(huán)境)
    發(fā)表于 12-08 14:21 ?48次下載
    華為LiteOS系統(tǒng)<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32F103</b>開發(fā)板(基于<b class='flag-5'>MDK</b>環(huán)境)

    RT-Thread系統(tǒng)移植STM32f103

    RT-Thread系統(tǒng)移植STM32f103
    發(fā)表于 12-09 12:51 ?26次下載
    RT-Thread系統(tǒng)<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32f103</b>

    STM32F103移植AT32F403AMDK(二)

    不是,由于技術(shù)和工藝問題,前些年的MCU還無法完全擺脫外部晶振,而近幾年的MCU才算真正能夠擺脫外部晶振,STM32F103系列和AT32F403A系列正好代表了這兩個(gè)階段的產(chǎn)品。
    的頭像 發(fā)表于 01-29 15:09 ?1401次閱讀

    AT32F403A系列 數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《AT32F403A系列 數(shù)據(jù)手冊.pdf》資料免費(fèi)下載
    發(fā)表于 01-22 10:06 ?4次下載