使用相同FLASH和管腳數量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。雖然兩個款芯片的寄存器地址以及架構基本相同。但是需要注意的是GD32F10x主頻是108兆,但是STM32F10x主頻是72兆。所以需要針對以RCC時鐘進行修改。
例如打開原子哥的ALIENTEK MINISTM32 實驗8 PWM輸出實驗例程
先將芯片的選項進行修改
然后將STM32的啟動文件替換成GD的啟動文件,關于STM32啟動,點擊:詳解STM32啟動文件。
當然也可以不替換,我這里選擇替換掉。
然后就想修改時鐘相關配置
①打開stm32f10x.h文件,找到定義
//#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up/
修改為
#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF) /!< Time out for HSE start up */
這是因為GD頻率高,并且穩定內部8兆的時鐘HSE需要更多的時間,這里給滿。
②修改system_stm32f10x.c文件
按照72MHz方式,添加108兆代碼
1)
改為
2)將
改為
3)將
改為
STM32的27位28位是保留的,但是GD的是用來配合PLL倍頻的
在最后添加108兆的時鐘配置程序
全局時鐘配置寄存器在GD中命名時RCC_GCFGR,在STM32中命名為RCC_CFGR,關于PLL倍頻系數配置PLLMF不同,紅框內是先將HSE(8兆)分頻為2得到4兆,然后27倍頻得到108兆。
這時就得到了108兆的主頻時鐘
然后修改讀取時鐘的函數void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
當發現時RCC_CFGR第27位置位了,就將倍頻數從12+15 = 27.
至此,GD32F103移植ST32F103的工程就修改完成了,就可以盡情的使用ST的庫代碼了。有問題可以聯系我,拉你入技術群交流學習。
審核編輯:湯梓紅
-
芯片
+關注
關注
455文章
50714瀏覽量
423137 -
寄存器
+關注
關注
31文章
5336瀏覽量
120230 -
移植
+關注
關注
1文章
379瀏覽量
28124 -
STM32F103
+關注
關注
33文章
477瀏覽量
63600 -
GD32F103
+關注
關注
5文章
18瀏覽量
9431
原文標題:在GD32F103移植STM32F103代碼
文章出處:【微信號:ARM與嵌入式,微信公眾號:ARM與嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論