st的价格和交期不用多说,大家都明白,在产品中大量使用st的芯片的公司都在寻找国产替代的出路。我们的产品追求的的是mcu的串口相应速度,在网友的使用评价和我们针对性测试之后,gd32最终被定为最优的产品,不仅性能符合要求,价格也是十分便宜,用来替换st最好不过了。项目的初期,我们和gd的代理进行了面对面的交流,他们推介通过修改相关寄存器直接烧录st的代码,但是我们实测并不理想。于是在他们的配合下成功使用gd自带的固件库替换掉了st的芯片。产品实测无任何问题,甚至由于gd更高的主频,运行效果远超预期!国产芯片,未来可期!
下面就进行st对gd的代码移植:
区别:gd32e230 对比 stm32f030 有着很好的兼容性和更高的性价比,内核和外设都有所增强。
stm32f030 与 gd32e230 在相同封装下是 pin to pin 兼容的。 外设上本人觉得 gd32e230功能覆盖 stm32f030,大部分外设 gd32e230 完全兼容 stm32f030, 后文我会具体介绍。 需要注意: stm32f030 外设编号从 1 开始, gd32e103 外设编号从 0 开始,且命名有差异。 这里介绍了stm32f030 系列和 gd32e230 系列内部资源对比总览
因为gd在主频上高于st,所以在使用直接烧录的方式移植时会出现延时不同等问题,这也是我不采用此方法的原因,不如直接重写代码。
我们可以从最常用的开始,因为时间原因,不可能全部的函数都移植,这里介绍最常用的。
gpio:例如我们使用stm32 usart1前需要初始化相关的io操作:
我们需要对gpio的时钟进行初始化,然后定义端口的复用模式,然后设置pa9,pa10的io模式速度等参数。因为使用了rs485,还要对使能口进行设置,这一点在gd上同样需要进行。
只不过相对于st的库函数,gd的更加简洁,因为gd的库函数的集成度更高,使用起来更加方便快捷。
代码的最后两行应该是设置端口的输出高低电平,我采用了寄存器的方式。加快代码运行速度。
原型是:gpio_bit_set(uint32_t gpio_periph,uint32_t pin);
gpio_bit_reset(uint32_t gpio_periph,uint32_t pin); 串口:gpio初始化完成之后我们需要配置串口:
这里大家都知道的,配置串口的时钟,波特率,起始位,停止位,数据位。这一点在gd上面同样的体现模式:
可以看得到的是代码的简洁程度是不同的,gd的外设配置和st的hal库有些类似,精简了代码量,但是设置的东西还是一样的。
设置完成后就可以使用库函数的发送和接收函数:
需要提的一点是,串口发送完成的判断应该使用while(reset == usart_flag_get(usart0, usart_flag_tc));我在这里卡住过,这个是最优的方式。
接收函数的代码执行效率着实不高。我使用的是直接操作寄存器,有需要的可以借鉴一下。
如果需要使用串口中断,直接调用一下几个函数:
nvic_irq_enable(usart0_irqn, 0);
usart_interrupt_enable(usart0, usart_int_rbne);
原文标题:stm32f0->gd32e230代码移植,非直接烧录
文章出处:【微信公众号:嵌入式arm】欢迎添加关注!文章转载请注明出处。
呐咯密密
华为Mate10即将发布:华为Mate10麒麟970加持,第一款安卓8.0的手机
OPPO这款太良心,1249起+升降4800万+骁龙710,华为遭阻击
数据链路层和传输层的区别是什么
雨量传感器脉冲输出和485输出信号的区别之处
泰克DSA70000能满足串行总线信号完整性测量的特殊要求
非直接烧录ST对GD的代码移植
了解最新升级手持式频谱仪版本!
深耕电站主动安全,华为获颁全球首个智能组串关断SSLD技术认证
解析移动电源的三大核心技术
关于轻触开关在生活中的各个方面的应用
Chroma7121出售优势价Chroma7121色彩分析仪7121
GGII:7月国内新能源汽车销量约为63.5万辆
TIOBE已公布2020年10月的编程语言排行榜
基于DSP的室内惯性导航系统设计
乐鑫 ESP RainMaker® 加速企业智能转型,私有云方案助力客户打造自有品牌
06:OpenCL的特点功能介绍
ST全新的36V运算放大器可提升汽车和工业应用系统的稳健性
高通全新智能穿戴专用芯片脱颖而出
医疗设备三维动画的制作技巧分享
GD32开发实战指南(基础篇) 第1章 开发环境搭建