女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32F103移植到AT32F403A之MDK(二)

創易棧 ? 來源:創易棧 ? 2023-01-29 15:09 ? 次閱讀

上一篇我們已經實現了不改硬件,只改軟件情況下將STM32F103C8T6替換為AT32F403ACGT7的過程,但畢竟STM32F103C8T6已經是10多年前的東西了,用現在的AT32F403ACGT7替換實在是大材小用了,畢竟這顆是主頻能到240M的M4。

上篇我們解決了替換能用的問題,本篇我們來結合AT32F403ACGT7的優勢,實現不改硬件只改BOM降成本的方法。

從接觸MCU開始,MCU外圍電路中就缺少不了很重要的器件,那就晶振,晶振是MCU的時鐘源。隨著技術的不斷發展,越來越多的MCU將晶振集成到了MCU內部,但集成到內部后真的就能夠省略掉外部晶振嗎,當然不是,由于技術和工藝問題,前些年的MCU還無法完全擺脫外部晶振,而近幾年的MCU才算真正能夠擺脫外部晶振,STM32F103系列和AT32F403A系列正好代表了這兩個階段的產品。

我們先來看看STM32F103系列內部晶振的參數

4bd82378-9bce-11ed-bfe3-dac502259ad0.png

蕩器精度大多數情況下都大于1%,最大時大于了2%,用在串口應用中都覺得不靠譜,更何況是在USB應用當中了,所以,官方文檔對使用內部晶振時做了明確的使用說明:

4bf9bb50-9bce-11ed-bfe3-dac502259ad0.png

我們再來看看AT32F403A系列的內部晶振參數

4c23d28c-9bce-11ed-bfe3-dac502259ad0.png

4c23d28c-9bce-11ed-bfe3-dac502259ad0.png

在使用RCC_CTRL寄存器校準情況下,能夠達到最大值偏差1%的精度,已經能夠滿足大多數的精度要求,RCC_CTRL寄存器校準是在系統啟動后自動完成的,不需要人為干預,如果想再提到精度,可以再修改相關寄存器,以提高到更高的精度。

4c58b236-9bce-11ed-bfe3-dac502259ad0.png

并且在USB應用中,為保證內部晶振能夠滿足精度要求,還提供了ACC校準功能,可以提高進度到0.25%。

4c856df8-9bce-11ed-bfe3-dac502259ad0.png

4cb13c4e-9bce-11ed-bfe3-dac502259ad0.png

4cb13c4e-9bce-11ed-bfe3-dac502259ad0.png

在這些校準方式下,AT32F403A系列的內部晶振已經能都替換掉外部晶振了。另外,在省略掉外部晶振后,還能夠讓芯片多出2個IO腳,在ST32F103系列中,使用內部晶振時空出的2個管腳只能做IO用,沒有中斷功能,而AT32F403A系列則沒有這個限制。

4d16d478-9bce-11ed-bfe3-dac502259ad0.png

接下來,本篇內容的重點就是在使用ST32F103標準庫情況下最小的改動實現開啟AT32F403A內部晶振,讓BOM成本降低,并且增加了性能。在上一篇中我在標準庫的系統時鐘初始化函數void SystemInit (void)內添加的開啟FPU代碼。

4d401996-9bce-11ed-bfe3-dac502259ad0.png

同樣在這個函數內還有一行代碼SetSysClock(),它負責設置系統內的各條總線時鐘。STM32這里一般是設置使用外部晶振,總線時鐘為72M。

4d607006-9bce-11ed-bfe3-dac502259ad0.png

因為我們要使用內部晶振,所以要將外部晶振相關的宏定義關掉,這里我們只需將#define SYSCLK_FREQ_72MHz 72000000關掉即可。

4d7c037a-9bce-11ed-bfe3-dac502259ad0.png

這樣所有和外部晶振相關的時鐘配置都將關閉,總線時鐘將被配置為內部時鐘。

4d95772e-9bce-11ed-bfe3-dac502259ad0.png

因為原來的程序都是建立在總線時鐘是72M情況下的,我們需要使用內部晶振重新創建各個總線的時鐘與原程序的總線時鐘一致,才能保證系統能夠正常運行。

我們在AT32F402A系列的BSP的system_at32f4xx.c文件內找到#define SYSCLK_FREQ_72MHz_HSI 72000000所對應的函數,這個函數內實現了再使用內部晶振情況下,配置總線為72M的操作(注意,BSP要用1.xx版本的,2.xx版本的庫風格改變了,不再兼容STM32標準庫風格)。

因為原來的程序都是建立在總線時鐘是72M情況下的,我們需要使用內部晶振重新創建各個總線的時鐘與原程序的總線時鐘一致,才能保證系統能夠正常運行。

我們在AT32F402A系列的BSP的system_at32f4xx.c文件內找到#define SYSCLK_FREQ_72MHz_HSI 72000000所對應的函數,這個函數內實現了再使用內部晶振情況下,配置總線為72M的操作(注意,BSP要用1.xx版本的,2.xx版本的庫風格改變了,不再兼容STM32標準庫風格)。

4da9695a-9bce-11ed-bfe3-dac502259ad0.png

4dbfe45a-9bce-11ed-bfe3-dac502259ad0.png

4dd902a0-9bce-11ed-bfe3-dac502259ad0.png

將static void SetSysClockTo72MHSI(void)函數,拷貝到現在的代碼中(位置根據自己習慣),我放在main函數這里。

4df80a60-9bce-11ed-bfe3-dac502259ad0.png

4df80a60-9bce-11ed-bfe3-dac502259ad0.png

由于缺少宏定義和寄存器名差異問題,會有很多報錯,先不管,先將函數內精簡一下,只保留我們使用型號的先關定義。

4e2cd39e-9bce-11ed-bfe3-dac502259ad0.png

然后我們對照STM32F103的參考手冊和AT32F403A的參考手冊中關于RCC寄存器的名稱定義,用STM32F103的寄存器名和宏定義替換AT32F403A的寄存器名和宏定義,修改后名稱后如下:

4e5e5838-9bce-11ed-bfe3-dac502259ad0.png

依然報錯的位置是因為這3個宏是STM32F103庫里沒有定義的,需要我們重新定義一下,我們可以在AT32F403A的BSP庫里找到,拷貝過來就行。

4e82b232-9bce-11ed-bfe3-dac502259ad0.png

接下來我們將SetSysClockTo72MHSI();添加的main函數開始的位置,也就是實現了原來void SystemInit (void)內SetSysClock();的工作。

4ea95b4e-9bce-11ed-bfe3-dac502259ad0.png

4ea95b4e-9bce-11ed-bfe3-dac502259ad0.png

重新編譯,沒有錯誤。

4ece4cf6-9bce-11ed-bfe3-dac502259ad0.png

至此,使用AT32F403A內部晶振替換原STM32F103外部晶振的配置就完成了,省去了外部晶振和電容,增加了2個能實現中斷的管腳,實現了通過修改BOM降低層本增加性能的目的。

注意:在這種配置下,多數外設模塊是能夠正常工作的,但部分外設會有問題,我會再后面的文章中繼續為大家分享相關的問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17806

    瀏覽量

    359683
  • STM32F103
    +關注

    關注

    33

    文章

    481

    瀏覽量

    65000
  • MDK
    MDK
    +關注

    關注

    4

    文章

    210

    瀏覽量

    32482

原文標題:STM32F103移植到AT32F403A之MDK(二)

文章出處:【微信號:創易棧,微信公眾號:創易棧】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    CS32F103RB有無驅動例程,是否可用stm32F103的驅動代碼?

    如果不能使用stm32F103驅動的話,請把驅動例程發送1830665518@qqcom
    發表于 05-15 10:54

    STM32F103x8 STM32F103xB單片機數據手冊

    STM32F103x8STM32F103xB單片機數據手冊
    發表于 04-14 14:55 ?1次下載

    STM32F103×8/STM32F103×B MCU手冊

    本文提供了STM32F103x8和STM32F103xB中密度高性能系列微控制器的訂購信息和機械器件特性。有關整個STMicroelectronics STM32F103xx系列的更多信息,請
    發表于 03-18 16:37 ?0次下載

    MH32F103A單片機 低價替代STM32,硬件完美兼容 主頻可達216M

    MH32F103A是一款基于高性能32位ARM Cortex-M3內核的單片機,工作頻率最高可達216 MHz,相比STM32F103系列的72 MHz有了顯著提升。內置最大512KB Flash
    的頭像 發表于 02-14 16:14 ?357次閱讀
    MH32<b class='flag-5'>F103A</b>單片機 低價替代<b class='flag-5'>STM32</b>,硬件完美兼容 主頻可達216M

    零死角玩轉STM32F103—指南者

    電子發燒友網站提供《零死角玩轉STM32F103—指南者.pdf》資料免費下載
    發表于 01-20 14:18 ?49次下載

    STM32F103x8/STM32F103xB規格書

    電子發燒友網站提供《STM32F103x8/STM32F103xB規格書.pdf》資料免費下載
    發表于 12-06 15:43 ?1次下載

    【GD32 MCU 移植教程】10、從STM32F030系列移植GD32E230系列

    GD32E230 對比 STM32F030 有著很好的兼容性和更高的性價比,內核和外設都有所增強。本人曾做過產品的 MCU 替換,將基于 STM32F0xx 1.5.0 固件庫的應用程序移植
    的頭像 發表于 09-07 10:24 ?1305次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】10、從<b class='flag-5'>STM32F</b>030系列<b class='flag-5'>移植</b><b class='flag-5'>到</b>GD32E230系列

    【GD32 MCU 移植教程】9、從 STM32F10x 系列移植 GD32F30x 系列

    對比、外設及性能對比以及從 STM32F10x 移植 GD32F30x 的移植步驟,旨在讓開發者能夠快速從
    的頭像 發表于 09-07 09:57 ?1645次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】9、從 <b class='flag-5'>STM32F</b>10x 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32<b class='flag-5'>F</b>30x 系列

    STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC輸出電壓

    概述 本篇文章主要介紹如何使用STM32CubeMX移植雅特力AT32F403AVGT7,并通過DAC輸出電壓,在芯片中有2個12位的DAC口可以供選擇。 硬件準備 首先需要準備一
    發表于 09-06 16:40

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植 GD32F4xx 系

    、外設及性能對比以及從 STM32F4xx 移植 GD32F4xx 的移植步驟,旨在讓開發者能夠快速從
    的頭像 發表于 09-06 09:40 ?2278次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】8、從 <b class='flag-5'>STM32F</b>4xx 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32<b class='flag-5'>F</b>4xx 系

    【GD32 MCU 移植教程】7、從 GD32F10x 移植 GD32E103

    本應用筆記旨在幫助您快速將基于 GD32F10x 2.0 版本及以上固件庫開發的應用程序從GD32F10x 系列微控制器移植 GD32E103
    的頭像 發表于 09-05 09:40 ?971次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】7、從 GD32<b class='flag-5'>F</b>10x <b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32E<b class='flag-5'>103</b>

    STM32F103無法下載程序的原因?

    STM32F103無法下載程序
    發表于 07-09 06:24

    如何使用STM32F103控制LTC2662?

    使用STM32F103控制LTC2662
    發表于 07-04 07:46

    STM32F103xC,STM32F103xD,STM32F103xE中文資料

    電子發燒友網站提供《STM32F103xC,STM32F103xD,STM32F103xE中文資料.pdf》資料免費下載
    發表于 06-17 14:12 ?7次下載

    如何使用STM32F103硬件SPI驅動AD5313?

    使用STM32F103硬件SPI驅動AD5313
    發表于 06-04 07:17