在GD32F103移植STM32F103代码
2024-12-03 来源:elecfans
使用相同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系列SPI导致死机问题
- GD32F103学习笔记(1)——搭建环境、编译烧写
- GD32F103学习笔记(3)——新建工程
- GD32F103学习笔记(4)——GPIO接口使用
- GD32F103学习笔记(6)——系统延时使用
- GD32F103学习笔记(2)——在GD32F103移植STM32F103代码
- GD32F103移植STM32的程序定时器开关
- gd32f103可以完全替代stm32f103吗
- GigaDevice发布多款GD32F103和GD32F101系列大容量增强型MCU
- ALINX技术教程:Zynq UltraScale+ MPSoC平台PYNQ 3.1.2系统移植指南
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
热门新闻




