不用说,ST的价格和交货日期,每个人都知道,在大量产品中使用ST芯片的公司正在寻找国内替代产品。
我们的产品追求的是MCU串行端口的相应速度。
经过用户的评估和针对性测试,GD32最终被确定为最佳产品。
性能不仅满足要求,而且价格也非常便宜。
它用来代替ST。
没有比这更好的了。
在项目开始时,我们与GD代理进行了面对面的交流。
他们建议通过修改相关的寄存器直接烧写ST代码,但是我们的实际测量并不理想。
因此,在他们的合作下,他们成功地用GD自己的固件库替换了ST芯片。
经过测试,该产品没有任何问题,即使由于GD频率较高,其运行效果也远远超出了预期!国产芯片,未来可期!以下是ST到GD的代码移植:区别:GD32E230与STM32F030相比具有良好的兼容性和更高的性价比,并且增强了内核和外围设备。
STM32F030和GD32E230在同一封装中与PinToPin兼容。
在外围设备方面,我认为GD32E230功能涵盖STM32F030。
大部分外设GD32E230与STM32F030完全兼容,我将在后面介绍。
注意:STM32F030外设编号从1开始,GD32E103外设编号从0开始,并且命名有所不同。
这是STM32F030系列和GD32E230系列内部资源的比较概述。
由于GD的频率比ST高,因此在使用直接燃烧方法进行移植时会存在诸如不同的延迟之类的问题。
这也是我不使用此方法的原因。
最好直接重写代码。
我们可以从最常用的开始。
由于时间原因,无法移植所有功能。
这是最常用的。
GPIO:例如,在使用STM32USART1之前,我们需要初始化相关的IO操作:我们需要初始化GPIO时钟,然后定义端口多路复用模式,然后设置PA9,PA10 IO模式的速度和其他参数。
因为使用RS485,所以需要设置启用端口,这也需要在GD上完成。
但是,与ST库函数相比,GD更简洁,因为GD的库函数更加集成,使用起来更加方便快捷。
代码的最后两行应该是将端口的输出设置为高电平和低电平。
我使用了注册方法。
加快代码执行速度。
原型是:gpio_bit_set(uint32_tgpio_periph,uint32_tpin); gpio_bit_reset(uint32_tgpio_periph,uint32_tpin);串行端口:GPIO初始化完成后,我们需要配置串行端口:众所周知,在此配置串行端口时钟,波特率,起始位,终止位,数据位。
这在GD的相同模式中得到了反映:可以看出,代码的简洁性是不同的。
GD的外围配置有点类似于ST的HAL库,它简化了代码量,但是设置仍然相同。
设置完成后,您可以使用库函数的发送和接收功能:要提及的一件事是,应在(RESET == usart_flag_get(USART0,USART_FLAG_TC))时使用判断串行端口传输完成的判断;我一直被困在这里,这是最好的方法。
接收功能的代码执行效率确实不高。
我使用的是直接操作寄存器,如果需要可以从中学习。
如果需要使用串行端口中断,请直接调用以下函数:nvic_irq_enable(USART0_IRQn,0); usart_interrupt_enable(USART0,USART_INT_RBNE);原始标题:STM32F0-> GD32E230代码移植,非直接刻录文章来源:[微信公众号:嵌入式ARM]欢迎关注!请指出转载文章的来源。
直美