第一.相同点有以下这些:
外围引脚定义: 相同型号的管脚定义相同

Cortex M3 内核: STM32F103 内核 R1P1 版本, STM32F205 内核 R2P1, GD32 内核 R2P1 版本,此内核修复了 R1P1 的一些 bug
芯片内部寄存器, 外部 IP 寄存器地址 : 逻辑地址相同,紧张是根据 STM32 的寄存器和物理地址, 做的正向研发.
函数库文件: 函数库相同,优化须要变动头文件
编译工具和型号命名是完备相同的。
第二.外围硬件差异
电压范围(ADC): GD32F:2.6-3.6V 。STM32F:2.0-3.6V(外部电压)。
GD32F: 1.2V(内核电压)。STM32F: 1.8V(内核电压)
BOOT 0 管脚: Flash 程序运行时,BOOT0 在 STM32 上可悬空,GD32 必须外 部下拉(从 Flash 运行,BOOT0 必须下拉地)
ESD 参数: STM32 人体模式 2KV,空气模式 500V GD32 人体模式 4KV(内测 5KV),空气模式 10KV(内测 15KV)
第三.内部构造差异
启动韶光: GD32 启动韶光相同,由于 GD 运行稍快,须要延长上电韶光 配置(2ms)
主频时钟: GD32F10 系列主频 108MHZ STM32F10 系列主频 72MHZ
Flash 擦除韶光: GD32 是 60ms/page,STM 30ms/page
FLASH 容量: GD32 最大容量 3M Byte
SRAM 空间: GD32F103 系列、GD32F105\107 大容量系列 SRAM 96K
VB 外扩总线 FSMC:GD32 100PIN 配置总线输出,STM32 144PIN 并且 256k 以上 才配置总线输出
第四.功耗差异(我们以128k以下容量的作为讲解)
就寝模式 Sleep: GD32F: 12.4mA STM32F10X: 7.5mA
深度就寝模式 Deep Sleep: GD32F: 1.4mA STM32F10X: 24uA
待机模式 Stand By: GD32F: 10.5uA STM32F10X: 3.4uA
运行功耗: GD32F: 32.4mA/72M STM32F10X: 52mA/72M
第五.内部 FLASH 差异
ISP: 擦写韶光同 STM32 有差异,利用新版 ISP 软件
IAP: 擦写韶光相同,按字写入,按页擦除
存储寿命: 10 万次擦写,数据保存 20 年以上
加密特性: 除了常规的禁止读出和 96 位 ID 号码加密之外,GD32 数据写入 Flash 时,具有存储逻辑地址连续,物理地址不连续的特性。
理解了它们的差异后我们再来说说关于GD32兼容性的详细剖析。
第一.关于系统部分的讲解。
1.晶振起振的差异:GD32 与 STM32 启动韶光都是 2ms,实际上 GD 的实行效率快,所 以 ST 的 HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)是 2ms,但是这个宏定义值 在 GD 上韶光就更加短了,以是要加大这个值的设置
处理的办法:
将宏定义: #define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) 修正为: #define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF) 备注:启动韶光宏定义所在位置:
在 V3.X 的库,其启动韶光宏定义在 stm32f10x.h 头文件中 (路径:\..\Libraries\CMSIS\CM3)。(库版本的不同,所在目录也有所不同)
在 V3.0 以前的库,其启动韶光宏定义在 stm32f10x_rcc.c 源文件中 (HSEStartUp_TimeOu(路径:\..\Libraries\STM32F10x_StdPeriph_Driver\src)。
2.有时候我在利用有源晶振的 GD32F103小容量的产品涌现问题,创造会在 MCU 的复位管脚一贯把电平拉到 0.89V,电平不能保持在高电平,这是由于部分有源晶振起振韶光太快,复位旗子暗记还没有完成产生的。
处理的办法:在有源晶振的输入端与地之前并上一个 30pf 电容。
GD32MCU主频支持108MHz高性能,在代码移植时我们须要把稳的一些事变,GD32 通过芯片内部加大缓存,提高了相同事情频率下的代码实行速率,带来 了高性能的利用体验。因此如果代码有用到 for 循环或 while 循环语句做精确定时的,定时韶光会由 于代码实行速率加快而使循环的韶光变短。利用 Timer 定时器则没有影响。
这期我们先分享到这里,想要学习单片机编程的同学可以持续关注小火,想要学习的资料的可以私信我或评论区回答“小火”,与我们一起发展,喜好的可以点个赞关注我们!








