在GD32F103移植STM32F103代码

在GD32F103移植STM32F103代码

使用相同FLASH和管脚数量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。虽然两个款芯片的寄存器地址以及架构基本相同。但是需要注意的是GD32F10x主频是108兆,但是STM32F10x主频是72兆。所以需要针对以RCC时钟进行修改。

例如打开原子哥的ALIENTEK MINISTM32 实验8 PWM输出实验例程
先将芯片的选项进行修改
在这里插入图片描述

然后将STM32的启动文件替换成GD的启动文件

在这里插入图片描述

当然也可以不替换,我这里选择替换掉。
在这里插入图片描述
然后就想修改时钟相关配置
①打开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的库代码了。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值