GD32直接使用HAL库(CubeMX生成代码)编程
本文章参考以下文章:
无。
一、使用背景
由于最近芯片价格高涨,STM32出现高价格与缺货的囧况。
https://baijiahao.baidu.com/s?id=1709133215644206348&wfr=spider&for=pc
与此同时,在各个设备上的国产化需求也日益旺盛。 以往较多的低端设备上,或者定制化嵌入式设备中都采用的意法半导体公司的STM32芯片作为主控制器,但由于受到上述两点的影响,设备采用国产化芯片成了主要解决方案。
二、芯片选型
为了加快项目进度,或原有程序移植,建议使用与STM32 Pin-Pin对应的国产芯片。 本次实验挑选了GD32F103RCT6直接替换STM32F103RCT6,这个型号的GD32是与STM32差距最小的(外部封装、内部寄存器)。 关于STM32与GD32的差异,有兴趣的可以去查查。
三、CubeMx程序生成
根据个人的工程或者项目自定义创建CubeMX的工程(使用对于的STM32的型好),并生成代码。 采用GD32F103RCT6与GD32F103VET6,已经完成以下外设的实验:
- IO控制
- 看门狗
- DMA
- 时钟分配(GD32理论可以跑108M,STM32最多72M,属于向下兼容)
- ADC(PWM触发的DMA方式)与DAC(阻塞)
- 定时器1、2、3、4、5,在使用FreeRTOS时,往后的定时器作为sysTick出现过问题,初始化不通过,目前还没有深究这部分是GD32的定时器与STM32不兼容,还是FreeRTOS的问题,建议采用前面部分的定时器做sysTick。
- RTC功能
- 串口(空闲中断的DMA接收,发送,1.8.4版本HAL库直接有空闲中断接收)
- CAN(貌似不能与USB同时使用,共享一个RAM地址,GD32的CAN功能不能使用
1.8.4 版本) - FreeRTOS(直接使用CubeMX生成)
- 内部Flash读写(低速)
以上实验不需要去更改任何一个参数或增加延时,适用于1.8.3 、1.8.4 版本。
四、Keil修改项
目前GD32唯一与STM32使用不同的地方,之前的开发都与STM32一致。
- 修改器件型号,修改为对应的GD32的型号,(找不到器件型号,需要去兆易创新官网下载)
CSDN链接: https://download.csdn.net/download/qq_40824852/72547805
官网下载链接: GD32固件包 找到对应的.pack文件直接安装即可。 这一步骤是保证固件对应GD32。
修改型号后,再次使用CubeMX生成代码后,会出现以下情况,重新选择正确的GD32型号即可。 2. 修改下载相关的设置(不使用keil附带的下载设置,不用管这部分)
最后点击确认即可.
- 正常编译工程,并下载程序至芯片,程序就可以正常运行了!
除GD32F103系列外的芯片,可能不适用上述操作。
五、总结
GD32替换STM32只需一步!
|