在GD32F103移植STM32F103代码

发布者:EternalSunset最新更新时间:2024-12-03 来源: elecfans关键字:GD32F103  移植 手机看文章 扫描二维码
随时随地手机看文章

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


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


先将芯片的选项进行修改

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

wKgZomV75wiAchmJAAAJ-0RPkVE025.png?imageView2/2/w/1000

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

wKgaomV75wiAaeamAAAQa8lifn0067.png?imageView2/2/w/1000
然后就想修改时钟相关配置

①打开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?imageView2/2/w/1000

②修改system_stm32f10x.c文件

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

1)

wKgaomV75wiAZWABAAANRmnSWLc425.png?imageView2/2/w/1000

改为

wKgZomV75wiAVrMnAAAMDeojOEc638.png?imageView2/2/w/1000

2)将

wKgaomV75wiAQ-orAACMq7o6aIM458.png?imageView2/2/w/1000

改为

wKgaomV75wiAQ-Y_AACecop0W-s195.png?imageView2/2/w/1000

3)将

wKgaomV75wmAMMr5AAAu6puY0Gs454.png?imageView2/2/w/1000

改为

wKgZomV75wiAY7IyAAAIPC-L0fs803.png?imageView2/2/w/1000

wKgZomV75wmAV9WIAADoFbohoRs367.png?imageView2/2/w/1000

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

wKgZomV75wiAaP5fAAB8_LT1Caw047.png?imageView2/2/w/1000

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

wKgZomV75wiAD9IDAABOvGgpz20692.png?imageView2/2/w/1000

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

wKgaomV75wiAZdKAAAJH2griYig386.png?imageView2/2/w/1000

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

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

wKgaomV75wiAdgqwAABmIMFgYXI897.png?imageView2/2/w/1000

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


关键字:GD32F103  移植 引用地址:在GD32F103移植STM32F103代码

上一篇:关于GD32F20x系列的安全加密部件的介绍和应用
下一篇:GD32F303想控制PA13~15、PB3和PB4不成功?

推荐阅读最新更新时间:2026-03-20 11:54

GD32F103移植STM32F103代码
使用相同FLASH和管脚数量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。虽然两个款芯片的寄存器地址以及架构基本相同。但是需要注意的是GD32F10x主频是108兆,但是STM32F10x主频是72兆。所以需要针对以RCC时钟进行修改。 例如打开原子哥的ALIENTEK MINISTM32 实验8 PWM输出实验例程 先将芯片的选项进行修改 然后将STM32的启动文件替换成GD的启动文件,关于STM32启动,点击:详解STM32启动文件。 当然也可以不替换,我这里选择替换掉。 然后就想修改时钟相关配置 ①打开stm32f10x.h文件,找到定义 //#define HSE_STARTU
[单片机]
在<font color='red'>GD32F103</font><font color='red'>移植</font><font color='red'>STM32F103</font><font color='red'>代码</font>
GD32F103移植STM32的程序定时器开关
GD32F103移植STM32程序时,程序中有一段需要关闭定时器来保护变量不被修改,如下: TIM_Cmd( TIM4, DISABLE ); yen += coinBuf ; coinBuf =0; TIM_Cmd( TIM4, ENABLE ); 在STM32上运行没有问题,但放到GD32上运行不了,定时器起不来。需要改成如下关闭中断。 TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); yen += coinBuf ; coinBuf =0; TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
[单片机]
基于STM32F103C8T6单片机的RTC实时时钟原理及配置代码
学习STM32的RTC之前先了解一下UNIX时间戳 UNIX时间戳 Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数(不进位为时、天、月),不考虑闰秒 时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量 世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间 优点 1)使用秒数可以简化硬件电路,直接弄一个很大的秒寄存器,不需要再考虑年月日寄存器以及进位 2)计算时间间隔很方便,直接用两个秒数相减 3)存储方便,用一个很大的变量来就可以了 秒计数器以及伦敦时间和北京时间的对用关系如下所示: 直接搜索可以找到在线
[单片机]
基于<font color='red'>STM32F103</font>C8T6单片机的RTC实时时钟原理及配置<font color='red'>代码</font>
GD32F103学习笔记(1)——搭建环境、编译烧写
一、搭建环境 1.1 官方资料 GD32F10x 资料下载 1.2 安装Keil 5 官网下载: http://www2.keil.com/mdk5/ 百度网盘: https://pan.baidu.com/s/1T_eF5NDYeq38bR0cqjiZkw 提取码:562z 阿里云盘: https://www.aliyundrive.com/s/giDvR2ShJR9 1.3 下载SDK 官网下载: http://www.gd32mcu.com/download/down/document_id/180/path_type/1 百度网盘: https://pan.baidu.com/s/1vneR70WP9qm9S
[单片机]
gd32f103可以完全替代stm32f103
GD32F103是中国厂商GigaDevice推出的一款低成本、高性能的微控制器产品线。STM32F103是意法半导体(STMicroelectronics)的旗舰产品之一,享有良好的声誉和广泛的市场份额。两个系列都基于ARM Cortex-M3内核,因此在功能和性能上有一些相似之处。 一、技术特点比较: 1.1 处理器核心: GD32F103和STM32F103都采用了ARM Cortex-M3内核,因此在核心处理能力和指令集方面并无差异。 1.2 主频和性能: 两个系列都提供了多个型号,主频从72MHz到120MHz不等。但是需要注意的是,尽管在频率上存在一些差异,但两个系列的处理器都是32位的,因此在处理数据和执行指令方面具
[单片机]
错误解决:STM32F103串口1与串口3相同代码却结果不同
在前几天调试openmv时发现同样的代码串口1和串口3的结果却是不一样的,当时着实是把我坑了很久,怎么都找不到原因,用示波器看波形也是没有问题的,在Openedv网站上有位网友指出是我初始化代码的问题,在翻阅参考手册后终于发现了问题。 下列代码为我原本的初始化代码: #include sys.h #include usart.h #include led.h #include usart3.h int theta_err,rho_err; int main(void) { Stm32_Clock_Init(9); //=====系统时钟设置 delay_init(72); /
[单片机]
错误解决:<font color='red'>STM32F103</font>串口1与串口3相同<font color='red'>代码</font>却结果不同
STM32F103RCT6+USART3+UART5初始化代码
USART和UART的区别就是:USART支持同步收发,UART只支持异步收发 同步模式:USART 需要同步始终信号USART_CK,通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式是一样的,都使用异步模式。 1 USART3初始化 void USART3_init(void) { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART3,GPIOB时钟 RCC
[单片机]
STM32F103 Flash操作代码解析
/************************************************************************/ // !!!一定要记住!!!Flash寿命是有限的,别程序开着一直擦!!用到再擦 // !!!爱护Flash人人有责 // 必须先解锁Flash uint64_t data = 0; // 一页 1KB // stm32f103 Flash 建议使用页地址为:0x0807F000 // 寻址范围:0x0807F000 - 0x0807FFFF uint32_t *Address = (uint32_t*)0x08
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved