单片机
返回首页

在GD32F103移植STM32F103代码

2024-12-03 来源:elecfans

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


例如打开原子哥的ALIENTEK MINISTM32 实验8 PWM输出实验例程


先将芯片的选项进行修改

wKgZomV75wiAFetjAACyvatd3q0780.png
然后将STM32的启动文件替换成GD的启动文件,关于STM32启动,点击:详解STM32启动文件。

wKgZomV75wiAchmJAAAJ-0RPkVE025.png

当然也可以不替换,我这里选择替换掉。

wKgaomV75wiAaeamAAAQa8lifn0067.png
然后就想修改时钟相关配置

①打开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需要更多的时间,这里给满。

wKgZomV75wiAS3pnAAANS4Hznww719.png

②修改system_stm32f10x.c文件

按照72MHz方式,添加108兆代码

1)

wKgaomV75wiAZWABAAANRmnSWLc425.png

改为

wKgZomV75wiAVrMnAAAMDeojOEc638.png

2)将

wKgaomV75wiAQ-orAACMq7o6aIM458.png

改为

wKgaomV75wiAQ-Y_AACecop0W-s195.png

3)将

wKgaomV75wmAMMr5AAAu6puY0Gs454.png

改为

wKgZomV75wiAY7IyAAAIPC-L0fs803.png

wKgZomV75wmAV9WIAADoFbohoRs367.png

STM32的27位28位是保留的,但是GD的是用来配合PLL倍频的

wKgZomV75wiAaP5fAAB8_LT1Caw047.png

在最后添加108兆的时钟配置程序

wKgZomV75wiAD9IDAABOvGgpz20692.png

全局时钟配置寄存器在GD中命名时RCC_GCFGR,在STM32中命名为RCC_CFGR,关于PLL倍频系数配置PLLMF不同,红框内是先将HSE(8兆)分频为2得到4兆,然后27倍频得到108兆。

wKgaomV75wiAZdKAAAJH2griYig386.png

这时就得到了108兆的主频时钟

然后修改读取时钟的函数void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)

wKgaomV75wiAdgqwAABmIMFgYXI897.png

当发现时RCC_CFGR第27位置位了,就将倍频数从12+15 = 27.


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外遥控音量控制

  • LM317过压保护

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章