欢迎来到我司分流电阻产品网站!
GD32如何代替STM32?
分流电阻 2024-04-28

作者:Jun一个人担心会抱怨链接:https://blog.csdn.net/qq_23852045/article/details/109802955& nbsp; GD32F103 GD是早期产品,GD32E103和GD32F303是GD32F103的升级和优化,可以与4个人兼容。

是的,尽管内核不同,通用外围设备很少涉及内核部分,并且在紧急情况下可以使用ST库开发。

1.相似之处1)外围引脚与PIN TO PIN兼容,并且每个引脚上的复用功能也相同。

2)芯片的内部寄存器,外部IP寄存器地址和逻辑地址完全相同,但是某些寄存器具有不同的默认值,并且某些外围模块的设计时序与STM32不同。

这种差异主要体现在软件修改中。

有关详情,请参见下文。

3)编译工具:完全一样。

例如:KEIL,IAR4)模型的命名方法完全相同,因此您只需查找具有相同后缀的模型,例如:STM32F103C8T6和GD32E103C8T6。

5)仿真工具:JLINK GDLINK 2.外围硬件的区别三,硬件的更换需要从上面的介绍中注意,我们可以看到GD32F30 / E103系列和STM32F103系列是兼容的,但是也需要注意。

1)BOOT0必须连接到10K下拉电阻或GND,ST可以悬空,这很重要。

2)必须存在RC复位电路,否则MCU可能无法正常工作,有时可能不需要ST。

3)有时发现仿真器无法连接。

由于GD的swd接口驱动能力比ST弱,因此有几种解决方法:该行应尽可能短; b。

降低社署通讯率; C。

SWDIO连接到10k上拉,SWCLK连接到10k下拉。

4)使用电池电源等,注意GD的工作电压。

例如,如果它下降到2.0V〜2.6V的范围,则ST仍然可以工作,而GD可能无法启动或工作异常。

四,使用ST标准库开发需要修改1)GD具有严格的时序要求。

要配置外围设备,您需要先打开时钟并配置外围设备,否则可能导致外围设备配置失败;否则,可能会导致外围设备配置失败。

时钟打开时,可以先配置ST。

2)修改外部晶体振荡器的启动超时时间,如果没有外部晶体振荡器,则可以跳过此步骤。

原因:GD和ST的启动时间有所不同,以便使GD MCU更准确地复位。

修改:修改宏定义:#define HSE_STARTUP_TIMEOUT((uint16_t)0x0500)到:#define HSE_STARTUP_TIMEOUT((uint16_t)0xFFFF)3)GD32F10X闪存值零等待,而ST需要2个等待周期,因此一些精确的延迟或代码模拟IIC或SPI可能需要修改。

原因:GD32使用专利技术来提高在相同工作频率下的代码执行速度。

修改:如果将for或while循环用于精确计时,则由于更快的代码执行,该计时将缩短循环时间,因此仿真需要重新计算设计延迟。

使用计时器无效。

4)在代码中设置读取保护。

如果您使用外部工具(例如JFLASH或脱机写入器)来设置读取保护,则可以跳过此步骤。

写入KEY序列后,您需要读取此位以确认密钥已生效。

对其进行如下修改:总共需要修改四个功能,如下所示:FLASH_Status FLASH_EraseOptionBytes(void); FLASH_Status FLASH_ProgramOptionByteData(uint32_t地址,uint8_t Data); uint32_t FLASH_GetWriteProtectionOptionus(字节)空白); 5)GD和ST之间的闪存擦除和编程时间有所不同,修改如下: 6)闪光灯必须大于256K。

请注意,如果小于256K,则可以忽略此设置。

与ST不同,GD闪存具有分区的概念。

在第一个256K中,CPU以零等待时间执行指令,这称为代码区域,而此范围之外的区域称为dataZ区域。

擦除和写入操作两者之间没有差异,但是读取操作时间却有很大差异。

代码区中的代码等待时间为零,数据区中的代码执行具有较大的延迟,并且代码执行效率比代码区慢一个数量级,因此通常不建议使用数据区运行需要高实时性能的代码。

要解决此问题,可以使用分散加载方法,例如在数据区域中放置初始化代码,图像代码等。

简介:到目前为止,在进行上述修改之后,无需使用USB代码和具有网络功能的复杂协议,就可以使用ST代码进行操作。

免责声明:本文的内容