在當下這個芯片緊張的時期,市面上用的最多的ST芯片缺貨嚴重,價格漲的離譜,只能找替代芯片滿足產品的生產需求,好在國內出現的一批替代ST芯片的廠商,比如我將要使用的AT32系列芯片的廠商雅特力,能夠較好的兼容ST的芯片。
移植背景是由于我之前項目上使用的是STM32F103C8T6,但有新需求需要增加新功能,而STM32F103C8T6的RAM在之前使用中被用的所剩無幾,無法滿足新需求,需要找新的芯片進行替代,正好其他項目上有用AT32F403ACGT7,正好PIN對PIN是兼容的,盡管flash和RAM都大很多,但此項目用的不多也就沒必要再買其他型號的了,芯片確定了,剩下就是代碼移植工作了。
理論上移植過程適用于全部AT32F403A系列型號
移植準備工作:
1. 一份STM32F103C8T6工程源碼(標準庫)
2.在雅特力官網的AT32F403A系列目錄下下載Datasheet;Reference Manual;BSP;Pack;Tool;Application Note (應用手冊)等文件
廠家為幫助用戶能夠很好的由STM32移植到AT32,提供了Application Note (應用手冊),在移植前還-要將廠商提供的文檔《AT32F403A_入門指南》和MG0007這兩個文件好好看看,里面介紹的比較全面,本篇文章的重點是介紹每一步移植過程的細節和遇到的問題,在《AT32F403A_入門指南》里介紹了BSP 與 PACK 的選擇,但本文實際對應關系不在官方文檔的描述內。
具體移植工程如下:
1. 安裝AT32 Pack,本文是MDK篇,所以安裝MDK的Pack
2. 打開STM32的MDK工程,編譯原工程,確認原工程沒問題
3. 更改芯片型號為AT32F403ACGT7,并暫時將FPU功能關閉,按實際芯片的flash和RAM修改相關參數(部分工程的相關參數需要在分散加載文件內修改)
4. 再次編譯文件,并接上仿真器,配置好仿真器設置(我使用的是ST-LINK,可根據自己情況修改不同的仿真器),進入仿真模式,如果進入正常,說明我們芯片切換的第一部分完成了。
5.接線來我們為了體現出AT32系列M4內核的優勢,我們要將FPU功能打開,詳細過程如下:
將AT32BSP中對應芯片型號的內核支持文件拷貝到要原來STM32工程的內核文件路徑下
將STM32工程內,core_cm3.c去掉
將stm32f10x.h內的#include "core_cm3.h"
改為 #include "core_cm4.h",
并添加宏定義 #define __FPU_PRESENT 1U
在system_stm32f10x.c的void SystemInit (void)函數內添加
#if defined (__FPU_USED) && (__FPU_USED == 1U)
SCB->CPACR |= ((3U << 10U * 2U) |? ? ? ? ?
* set CP10 Full Access */
(3U << 11U * 2U)? );??????
/* set CP11 Full Access */
#endif
在魔術棒設置內開啟FPU
這里有個需要注意的地方
上述操作完成后,實際上FPU已經開啟,但在MDK編輯器內顯示的相關宏定義依然是灰色的,這是編輯器的問題,可以進到仿真環境下,看先關代碼是否被執行來確認FPU是否真的開啟了。
由于AT32F403A是寄存器級兼容STM32F103系列的,至此,在使用外部晶振情況下,將STM32F103工程遷移到AT32F403A系列的初始過程就介紹完了,并將M4內核的FPU功能開啟了,實現地性能的提高。后續我還會針對AT32的其他提升特性和注意事項進行介紹,希望本篇文章對有遷移到AT32F403A系列芯片的工程師有幫助。
審核編輯:湯梓紅
-
寄存器
+關注
關注
31文章
5355瀏覽量
120513 -
STM32
+關注
關注
2270文章
10904瀏覽量
356341 -
移植
+關注
關注
1文章
379瀏覽量
28144 -
STM32F103
+關注
關注
33文章
477瀏覽量
63690 -
MDK
+關注
關注
4文章
209瀏覽量
32079
原文標題:STM32F103移植到AT32F403A之MDK(一)
文章出處:【微信號:創易棧,微信公眾號:創易棧】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論