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

    文章

    1193

    浏览量

    132766
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74381

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于ST系列MCU使用STlink仿真烧录常见问题

    关于ST系列MCU使用STlink仿真烧录常见问题
    的头像 发表于 04-14 17:16 458次阅读
    关于<b class='flag-5'>ST</b>系列MCU使用STlink仿真<b class='flag-5'>烧录</b>常见问题

    【教程】CW32之使用J-Link烧录.hex文件

    在平时调试时,我们也可以使用DAP-Link、ST-Link等进行烧录和Debug,使用方法和STM32类似。然而当我们手头只有hex文件(或bin文件)时,可以尝试使用J-Link进行烧录
    的头像 发表于 04-01 16:56 3216次阅读
    【教程】CW32之使用J-Link<b class='flag-5'>烧录</b>.hex文件

    IC烧录总是出错?可能是烧录座不匹配

    深夜产线芯片烧录报错,排查代码、电源、烧录器后仍无果,不起眼的烧录座往往是症结所在。烧录座常因被当作 “标准件” 而被低估,封装迭代下,物理
    的头像 发表于 02-04 11:13 510次阅读

    烧录IC就是芯片烧录!新手必读的IC烧录基础指南

    本文为新手科普 IC 烧录(即芯片烧录)知识,明确其本质是通过专用设备将二进制程序文件写入集成电路的过程,明火操作。介绍了烧录必备的烧录
    的头像 发表于 12-25 13:46 716次阅读

    机智云Gokit3开发篇:ST-Link烧录MCU程序操作详解

    -Link烧录器是一种简便且可靠的方式,个人较为推荐。通过KeilMDK软件,可以直接在软件内进行烧录,操作简单高效。此外,Gokit3底板自带ST-Link接口或模块,用户只
    的头像 发表于 12-17 18:46 658次阅读
    机智云Gokit3开发篇:<b class='flag-5'>ST</b>-Link<b class='flag-5'>烧录</b>MCU程序操作详解

    第一个基于sdcc的MCS-51实时操作系统移植

    Linux下均可使用, 代码一个符号都不需要改就能直接编译烧录(当然可能需要在VSCode中配一下其它工具链的路径), 这对需要在Windows系统下开发STC单片机程序的人应该有一
    发表于 12-10 10:15

    gd32vf103r-start和gd32vf103c-start区别是什么?

    gd32vf103r-start和gd32vf103c-start区别,我将c-start板的led代码下进r-start板里,led没有亮,这是什么原因。我是直接操作IO口,因此和l
    发表于 11-11 06:49

    制作完qboot工程后,烧录板子中发现没有qboot开始的打印,为什么?

    我是使用的gd32f103rct6芯片,时钟设置的是72MHZ,与stm32f103rct6一致,烧录完之后打印值如图。对qboot不是太了解,完全按照网上教程配置,从env中拉取玩qboot文件后
    发表于 09-19 06:48

    GD32F103RCT6移植qboot,烧录之后系统卡死怎么解决?

    如题,我使用的是stm32的hal库对STM32F103RCT6芯片进行配置的代码烧录GD32F103RCT6中,串口和PWM都调试成功,没有问题,所以开始移植qboot。使用env
    发表于 09-19 06:41

    rtthread5.2.0移植gd32H759无法启动芯片怎么解决?

    1.使用mdk5 armv5编译软件正常通过,但切换为armv6报数据类型定义错误 头文件都包含,还需要修改哪里? 2.用armv5编译代码无错误,下载到gd32H759开发板上,导致jlink
    发表于 09-15 06:13

    gd32f470移植成功无法进入main函数,怎么解决?

    如下所示,我之前用gd32f470移植成功无法进入main函数,之后用官方例程用stm32f407去跑也还是这样
    发表于 09-10 06:24

    机智云配网教程第三期:单片机代码移植实战

    :stm32f103c8t6,WiFi模块:ESP-01s,下载器:ST-LINK2.软件:keil5的工程文件模板,mcu代码代码资源:未移植
    的头像 发表于 07-01 17:32 2127次阅读
    机智云配网教程第三期:单片机<b class='flag-5'>代码</b><b class='flag-5'>移植</b>实战

    程序烧录原理

    什么是烧录-义嘉泰带你深度了解IC烧录服务:https://bbs.elecfans.com/jishu_2491063_1_1.html 程序烧录是将编写好的程序代码写入单片机或微控
    发表于 06-17 11:29

    #烧录芯片 #单片机 #存储芯片 #烧录机 #烧录器 什么是烧录

    烧录
    jf_99460966
    发布于 :2025年05月29日 11:25:25

    STM32与机智云连接实现步骤与技巧(下篇):机智云代码移植与优化

    在《STM32与机智云连接实现步骤与技巧(上篇)》中,我们介绍了硬件连接和通信协议配置。本篇将重点讲解如何将机智云相关代码移植到STM32,完成数据上传和设备控制。我们将介绍如何在STM32中配置
    的头像 发表于 05-23 18:10 1346次阅读
    STM32与机智云连接实现步骤与技巧(下篇):机智云<b class='flag-5'>代码</b><b class='flag-5'>移植</b>与优化