0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

非直接烧录ST对GD的代码移植

Q4MP_gh_c472c21 来源:21ic论坛 作者:呐咯密密 2021-01-21 09:53 次阅读

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 系列内部资源对比总览

cf054e6a-57dd-11eb-8b86-12bb97331649.png


因为GD在主频上高于ST,所以在使用直接烧录的方式移植时会出现延时不同等问题,这也是我不采用此方法的原因,不如直接重写代码。

我们可以从最常用的开始,因为时间原因,不可能全部的函数都移植,这里介绍最常用的。

GPIO:例如我们使用STM32 USART1前需要初始化相关的IO操作:

cf731c38-57dd-11eb-8b86-12bb97331649.png

我们需要对GPIO的时钟进行初始化,然后定义端口的复用模式,然后设置PA9,PA10的IO模式速度等参数。因为使用了RS485,还要对使能口进行设置,这一点在GD上同样需要进行。

cfa167be-57dd-11eb-8b86-12bb97331649.png

只不过相对于ST的库函数,GD的更加简洁,因为GD的库函数的集成度更高,使用起来更加方便快捷。

代码的最后两行应该是设置端口的输出高低电平,我采用了寄存器的方式。加快代码运行速度。

原型是:gpio_bit_set(uint32_t gpio_periph,uint32_t pin);
gpio_bit_reset(uint32_t gpio_periph,uint32_t pin); 串口:GPIO初始化完成之后我们需要配置串口:

cfcfcb86-57dd-11eb-8b86-12bb97331649.png

这里大家都知道的,配置串口的时钟,波特率,起始位,停止位,数据位。这一点在GD上面同样的体现模式:

d017cc38-57dd-11eb-8b86-12bb97331649.png


可以看得到的是代码的简洁程度是不同的,GD的外设配置和ST的HAL库有些类似,精简了代码量,但是设置的东西还是一样的。

设置完成后就可以使用库函数的发送和接收函数:

d05dd282-57dd-11eb-8b86-12bb97331649.png

d0882bb8-57dd-11eb-8b86-12bb97331649.png

需要提的一点是,串口发送完成的判断应该使用while(RESET == usart_flag_get(USART0, USART_FLAG_TC));我在这里卡住过,这个是最优的方式。

接收函数的代码执行效率着实不高。我使用的是直接操作寄存器,有需要的可以借鉴一下。

d0cd1354-57dd-11eb-8b86-12bb97331649.png

如果需要使用串口中断,直接调用一下几个函数:

nvic_irq_enable(USART0_IRQn, 0);

usart_interrupt_enable(USART0, USART_INT_RBNE);

原文标题:STM32F0->GD32E230代码移植,非直接烧录

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

呐咯密密

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ST
    ST
    +关注

    关注

    32

    文章

    1133

    浏览量

    128915
  • 代码
    +关注

    关注

    30

    文章

    4781

    浏览量

    68542

原文标题:STM32F0->GD32E230代码移植,非直接烧录

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GD32 MCU 移植教程】10、从STM32F030系列移植GD32E230系列

    GD32E230 对比 STM32F030 有着很好的兼容性和更高的性价比,内核和外设都有所增强。本人曾做过产品的 MCU 替换,将基于 STM32F0xx 1.5.0 固件库的应用程序移植
    的头像 发表于 09-07 10:24 640次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】10、从STM32F030系列<b class='flag-5'>移植</b>到<b class='flag-5'>GD</b>32E230系列

    GD32 MCU 移植教程】9、从 STM32F10x 系列移植GD32F30x 系列

    对比、外设及性能对比以及从 STM32F10x 移植GD32F30x 的移植步骤,旨在让开发者能够快速从STM32F10x 移植GD
    的头像 发表于 09-07 09:57 690次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】9、从 STM32F10x 系列<b class='flag-5'>移植</b>到 <b class='flag-5'>GD</b>32F30x 系列

    GD32 MCU 移植教程】8、从 STM32F4xx 系列移植GD32F4xx 系

    、外设及性能对比以及从 STM32F4xx 移植GD32F4xx 的移植步骤,旨在让开发者能够快速从STM32F4xx移植GD32F
    的头像 发表于 09-06 09:40 1263次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】8、从 STM32F4xx 系列<b class='flag-5'>移植</b>到 <b class='flag-5'>GD</b>32F4xx 系

    GD32 MCU 移植教程】7、从 GD32F10x 移植GD32E103

    本应用笔记旨在帮助您快速将基于 GD32F10x 2.0 版本及以上固件库开发的应用程序从GD32F10x 系列微控制器移植GD32E103 系列微控制器。
    的头像 发表于 09-05 09:40 509次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】7、从 <b class='flag-5'>GD</b>32F10x <b class='flag-5'>移植</b>到 <b class='flag-5'>GD</b>32E103

    GD32 MCU 移植教程】6、从GD32F1x0和GD32F3x0移植GD32E230

    和低成本,所以在存量客户 中可能会有越来越多的客户会有从 GD32F1x0 和 GD32F3x0 移植GD32E230 系列的需求, 本文档专门针对既有的
    的头像 发表于 09-04 09:38 566次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】6、从<b class='flag-5'>GD</b>32F1x0和<b class='flag-5'>GD</b>32F3x0<b class='flag-5'>移植</b>到<b class='flag-5'>GD</b>32E230

    GD32 MCU 移植教程】5、GD32E230 系列移植GD32F330 系列

    移植GD32F330 系列的需求,本文 档专门针对既有的 GD32E230 代码如何移植GD
    的头像 发表于 09-03 10:05 1090次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】5、<b class='flag-5'>GD</b>32E230 系列<b class='flag-5'>移植</b>到 <b class='flag-5'>GD</b>32F330 系列

    GD32 MCU 移植教程】2、从 GD32F303 移植GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序从 GD32F303 系列微控
    的头像 发表于 08-31 09:36 1459次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】2、从 <b class='flag-5'>GD</b>32F303 <b class='flag-5'>移植</b>到 <b class='flag-5'>GD</b>32F503

    GD32 MCU 移植教程】1、从 GD32F10x 移植GD32F30x

    应用程序移植到新的微控制器。本应用笔记旨在帮助您快速将应用程序从 GD32F10x 系列微控制器移植GD32F30x 系列微控制器。
    的头像 发表于 08-30 09:52 1550次阅读
    【<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>移植</b>教程】1、从 <b class='flag-5'>GD</b>32F10x <b class='flag-5'>移植</b>到 <b class='flag-5'>GD</b>32F30x

    晶华微多用户代码烧录器解决方案

    随着杭州晶华微电子股份有限公司(股票代码:688130)芯片产品线的扩展,对烧录器的需求也逐渐增加。当前烧录器支持单个用户代码的在线烧录和离
    的头像 发表于 08-29 17:34 517次阅读
    晶华微多用户<b class='flag-5'>代码</b><b class='flag-5'>烧录</b>器解决方案

    stm32用串口烧录怎么设置

    准备工作 确保您拥有STM32开发板和相应的硬件设备,如USB转串口模块。 安装STM32CubeMX和STM32CubeProgrammer软件,这些是ST官方提供的工具,用于配置和烧录STM32
    的头像 发表于 08-22 09:33 1465次阅读

    GD32 MCU 入门教程】二、GD32 MCU 烧录说明(3)脱机烧录

    ,具体以烧录器型号为准。 GD官方的GD-link烧录工具也支持离线烧录功能,装载好代码后通过按
    的头像 发表于 08-08 17:44 1119次阅读
    【<b class='flag-5'>GD</b>32 MCU 入门教程】二、<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>烧录</b>说明(3)脱机<b class='flag-5'>烧录</b>

    GD32 MCU 入门教程】二、GD32 MCU 烧录说明(1)ISP 烧录

    ISP:In System Programing,在系统编程,通过MCU片内的引导程序进行Flash编程。 GD32片内有一个只读信息块,用于存放引导装载程序,引导程序在MCU出厂前就会提前烧录
    的头像 发表于 08-08 16:20 890次阅读
    【<b class='flag-5'>GD</b>32 MCU 入门教程】二、<b class='flag-5'>GD</b>32 MCU <b class='flag-5'>烧录</b>说明(1)ISP <b class='flag-5'>烧录</b>

    STM32H723ZG无法烧录的原因有哪些?

    数据线问题,试验过多根数据线 板子问题,使用同款板子同样不行 同板子数据线他人电脑可以直接keil download直接烧录 已用
    发表于 03-13 06:53

    GD32 MCU如何将烧录口配置为GPIO使用?

    如果大家在进行GD32 MCU开发时发现GPIO引脚使用不足,可以尝试将烧录口配置为GPIO使用,这样就可以多出几个引脚使用,但使用的时候如何配置以及有哪些注意事项,本视频将会为大家进行解答。
    的头像 发表于 02-20 10:18 1970次阅读
    <b class='flag-5'>GD</b>32 MCU如何将<b class='flag-5'>烧录</b>口配置为GPIO使用?

    芯片GD32与以太网芯片的坑

    参考例程是基于GD32F450的,在移植过程中遇到一些容易忽略的地方,导致程序卡在gd32fxx_enet.c中enet_phy_config的位置。将GD32F450上的
    的头像 发表于 01-16 08:00 2084次阅读
    芯片<b class='flag-5'>GD</b>32与以太网芯片的坑