STMCU小助手
发布时间:2022-3-13 20:59
GD32F103是GD早期的产品,GD32E103和GD32F303是对GD32F103的升级和优化,所以4者是兼容的。虽然内核不同,但是通用外设几乎很少涉及到内核部分,在时间急迫的情况下可以使用ST的库开发。 一、相同点 1)外围引脚PIN TO PIN兼容,每个引脚上的复用功能也完全相同。 j- q( A4 r S# J- ~2 p5 } 2)芯片内部寄存器、外部IP寄存器地址和逻辑地址完全相同,但是有些寄存器默认值不同,有些外设模块的设计时序上和STM32有差异,这点差异主要体现在软件上修改,详情见下文。 ' F. t/ h" }0 G& g$ I% d 3)编译工具:完全相同,例如KEIL 、IAR。 , w* s& A% F* P* r* e0 v: v2 K 4)型号命名方式完全相同,所以替代只需找尾缀相同的型号即可,例如:STM32F103C8T6 与 GD32E103C8T6。 & w1 A. o2 u; _2 \7 g+ P" c- m 5)仿真工具:JLINK GDLINK 二、外围硬件区别
8 E8 U0 k% I6 H% Z) h$ m+ R+ z ) G5 m1 Z9 |' q. \. g三、硬件替换需要注意的地方 从以上介绍可以看出,GD32F30/E103系列和STM32F103系列是兼容的,但也需要一些注意的地方。 \" M1 M5 t6 u1 X9 G1)BOOT0必须接10K下拉或接GND,ST可悬空,这点很重要。 ( n ^: [2 U, u R6 i. }% z 2)RC复位电路必须要有,否则MCU可能不能正常工作,ST的有时候可以不要。 + T/ K+ C& W/ G. a4 @% v & }, j7 _, w8 P3)有时候发现用仿真器连接不上。因为GD的swd接口驱动能力比ST弱,可以有如下几种方式解决:
4)使用电池供电等,注意GD的工作电压,例如跌落到2.0V~2.6V区间,ST还能工作,GD可能无法启动或工作异常。 四、使用ST标准库开发需要修改的地方 + j* ^- D0 V7 t1)GD对时序要求严格,配置外设需要先打开时钟,在进行外设配置,否则可能导致外设无法配置成功;ST的可以先配置在开时钟。 , \2 w1 H' j) f' n* h2)修改外部晶振起振超时时间,不用外部晶振可跳过这步。 |/ g2 j( I( V. d, k+ l原因:GD与ST的启动时间存在差异,为了让GD MCU更准确复位。 * g n/ U+ U# r* N6 h& v. V修改: 将宏定义:#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)修改为:#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)修改为:/ m4 \( _3 Q( T6 T% n, A#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF) 3)GD32F10X flash取值零等待,而ST需要2个等待周期,因此,一些精确延时或者模拟IIC或SPI的代码可能需要修改。 原因:GD32采用专利技术提高了相同工作频率下的代码执行速度。 . ~4 a: O( q( K1 ?; s+ Z* E ( K) J$ P$ ^6 f# c; J1 L& x修改:如果使用for或while循环做精确定时的,定时会由于代码执行速度加快而使循环的时间变短,因此需要仿真重新计算设计延时。使用Timer定时器无影响。 4)在代码中设置读保护,如果使用外部工具读保护比如JFLASH或脱机烧录器设置,可跳过此步骤。 在写完KEY序列后,需要读该位确认key已生效,修改如下:
总共需要修改如下四个函数:
/ ?( @7 x, l3 z+ W$ w 5)GD与ST在flash的Erase和Program时间上有差异,修改如下: 8 d$ N z; n) B B
1 E/ u( ~+ Z& \ 6)需求flash大于256K注意,小于256K可以忽略这项。 + u; s# B- g8 C与ST不同,GD的flash存在分区的概念,前256K,CPU执行指令零等待,称code区,此范围外称为dataZ区。 # E k8 x z }* ^; L# R$ W两者在擦写操作上没有区别,但在读操作时间上存在较大差别,code区代码取值零等待,data区执行代码有较大延迟,代码执行效率比code区慢一个数量级,因此data区通常不建议运行对实时性要求高的代码。 _+ |- G$ Z7 r为解决这个问题,可以使用分散加载的方法,比如把初始化代码,图片代码等放到data区。 f8 }5 q$ q! b8 v3 ~! J0 k0 U- R总结:至此,经过以上修改,在不使用USB和网络能复杂协议的代码,就可以使用ST的代码操作了。 8 p5 G) _7 X8 K# J( b( z u* t1 t3 N* \* L |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版