目錄
前言
1. 移植AT庫
1.1 移植核心相關檔案
1.2 移植晶片型号相關檔案
1.3 移植晶片外設驅動庫
1.4 移植配置檔案及中斷回調函數檔案
2. 移植FreeRTOS源碼
2.1 擷取 FreeRTOS 源碼
2.2 移植源碼2.2.1 Source 檔案夾
3. 修改工程
3.1 工程配置
3.1.1 修改全局宏
3.1.2 添加工程檔案
3.1.3 添加頭檔案路徑
3.2 根據 AT 庫修改代碼
3.3 裁剪FreeRTOS核心
連結
随着全球晶圓缺貨,ST瘋狂漲價,也是時候把目光放到國産 MCU 上啦,感覺還不錯,看 datasheet 的的資料來分析,成本效益高,性能強。至于穩定性嘛,我沒有長時間老化和細節地測試過,不做評論。
建議:
如果不想重新建構新的 AT 工程,就在你ST産品的工程上修改即可,主要替換ST庫(與AT庫幾乎是隻有命名的差別)、啟動檔案、核心檔案、全局宏、freeRTOS中的主頻設定等等。
替換ST庫時,注意命名即可,可以參考AT提供的例程來配置你的硬體IO。
說明:
由于建立工程和替換ST都差不多,是以不分開細說。
以下由ST工程轉到AT工程。
由 STM32F103VCT6 轉到 AT32F403AVCT7。
AT 提供了一套完整的 BSP&Pack 用于開發(百度網盤連結中可找到)。
主要包括 at32f4xx 外 設 驅 動 庫 、 内 核 相 關 文 件 、 完 整 的 應 用 例 程 以 及 能 夠 支 持 Keil_v5 、 Keil_v4 、 IAR_v6 和 IAR_v7、IAR_v8等多種開發環境的 Pack 檔案。
AT32F403AVCT7 核心為 Cortex ® -M4F。
删除 CM3 核心檔案

把 CM4 核心檔案拷貝進來
CM4 檔案源碼路徑:BSP\AT32F4xx_StdPeriph_Lib_V1.2.9\Libraries\CMSIS\CM4\CoreSupport
啟動檔案,先删除本地的啟動檔案
把AT32的啟動檔案一通拉過來對應位置。可以隻拉需要的啟動檔案,如 startup_at32f403avct7.s 檔案。
AT 啟動檔案源碼路徑: BSP\AT32F4xx_StdPeriph_Lib_V1.2.9\Libraries\CMSIS\CM4\DeviceSupport\startup\mdk
啟動檔案的選擇可以參考文檔 《AT32F4xx标準庫BSP&Pack應用指南.pdf》中的 2.2 BSP使用方法。
晶片配置檔案,先删除本地STM32的晶片配置檔案
把 AT 的晶片配置檔案拷貝進來
AT 晶片配置檔案源碼路徑:BSP\AT32F4xx_StdPeriph_Lib_V1.2.9\Libraries\CMSIS\CM4\DeviceSupport
删除STM32的外設驅動庫
把 AT 的外設驅動庫拷貝進來
AT 外設驅動庫源碼路徑:BSP\AT32F4xx_StdPeriph_Lib_V1.2.9\Libraries
删除 STM32 配置檔案及中斷回調函數專用檔案。
添加 AT32 配置檔案及中斷回調函數專用檔案。
注意,就算是在STM32&FreeRTOS工程的基礎上移植,也要修改FreeRTOS檔案,因為核心不一樣,一個是CM3,一個是CM4F。
因為移植比較簡單,是以以下教程是從 零 移植。如果工程中已有 FreeRTOS 架構,則隻需要替換即可。
方法1:
FreeRTOS官網:http://www.freertos.org/
具體下載下傳步驟不在此闡述。
方法2:
可從 AT 提供的例程裡面擷取。
也可以從 AT 提供的 BSP 包中擷取:
路徑:BSP\AT32F4xx_StdPeriph_Lib_V1.2.9\Middlewares。
先在工程目錄中建立兩個路徑的檔案夾,分别用于存放源檔案和頭檔案:osPRJ\AT32-FreeRTOS\FreeRTOS\src 和 osPRJ\AT32-FreeRTOS\FreeRTOS\inc。
下圖紅框中為 FreeRTOS 通用源檔案和頭檔案,都移植到工程FreeRTOS對應檔案夾下
這兩部分的檔案試用于各種編譯器和處理器,是通用的。
添加核心接口檔案,移植到工程FreeRTOS對應檔案夾下
portblle 檔案夾裡面很多與編譯器相關的檔案夾,在不同的編譯器中使用不同的支援檔案。
核心接口檔案路徑:FreeRTOS\Source\portable\RVDS\ARM_CM4F
檔案裡面的内容是由 FreeRTOS 官方的技術人員為 Cortex-M4F 核心的處理器寫的接口檔案,裡面核心的上下文切換代碼是由彙編語言編寫而成。
添加記憶體管理檔案,移植到工程FreeRTOS對應檔案夾下(本工程使用 heap4.c)
MemMang 檔案夾下面存放着與記憶體管理相關的檔案。
最後,拷貝 FreeRTOSConfig.h 檔案到 user 檔案夾,即是和 main.c 一起即可(可自由存放)。
FreeRTOSConfig.h 檔案是 FreeRTOS 的工程配置檔案。
主要用于配置和裁剪 FreeRTOS 核心。
可以先找 STM32 demo 的配置檔案:
或者去 AT 提供的 FreeRTOS 工程中拷貝一個 FreeRTOSConfig.h 檔案即可。二選一,反正都要配置的。
至此,檔案移植完畢。進入修改工程。
根據晶片型号設定不同的全局宏,可以參考官方例程或文檔 《AT32F4xx标準庫BSP&Pack應用指南.pdf》中的 2.2 BSP使用方法。
移除所有前面移植檔案時删除的檔案
添加核心配置檔案:system_at32f4xx.c。
添加啟動檔案:startup_at32f403avct7.s。
添加外設驅動庫檔案,即是檔案夾 AT32F4xx_StdPeriph_Driver 下的所有 .c 檔案。
添加 FreeRTOS 源碼通用源檔案。(若原工程已有,可省略該步驟)
添加 FreeRTOS 源碼接口檔案:port.c。(若原工程已有,可省略該步驟)
添加 FreeRTOS 源碼記憶體管理檔案檔案:heap_4.c。(若原工程已有,可省略該步驟)
添加 AT32 配置檔案、中斷回調函數專用檔案:at32f4xx_conf.h、at32f4xx_it.c。
布局效果圖:
修改 System_at32f4xx.c 檔案内容:
System_at32f4xx.c 裡面包含了系統時鐘初始化内容,原生檔案裡可能沒有配置主頻,是以下面怕配置主頻為240MHz**。
打開 <code>#define SYSCLK_FREQ_240MHz 240000000</code> 即可。(若想配置為其它的主頻,打開其一即可。)
頭檔案:
初始化結構體名稱:
GPIO_Type,如
其它 SPI_Type 等等也如此類推。
初始化結構體成員:
其它報錯的成員也可以跳到該結構體定義處,找出對應成員名,替換即可。
引腳号:
GPIO_Pins_1,如:
還有引腳高低電平的配置也要修改:
時鐘宏:
RCC_APB2PERIPH_GPIOA,如
其它 RCC_APB1PERIPH_USART2 等等也如此類推。
序列槽及DMA:
一些函數名和參數宏名等等,如:
好啦好啦,其它報錯的名稱替換就自行繼續吧。畢竟就隻是替換 而已。
不過還是要注意,定時器不是簡單的改名字,還可能要該第幾個定時器。有空出一個 AT 的定時器配置教程。
修改後,編譯無誤
裁剪核心,修改 FreeRTOSConfig.h 檔案即可。
把 configCPU_CLOCK_HZ 宏配置為 SystemCoreClock即可,表示目前CPU主頻。
其它配置及裁剪不細說。
至此,編譯,燒寫即可。不過要記得選擇正确的晶片噢。
連結:
李柱明部落格:https://www.cnblogs.com/lizhuming/
本文連結:https://www.cnblogs.com/lizhuming/p/14581761.html
雅特力官網
從中可以下載下傳參考文檔,手冊,晶片包等等資料。
雅特力BSP-百度網盤
密碼:t3io