2018年11月1日,业界领先的半导体供应商兆易创新(GigaDevice)正式推出主频高达72MHz的GD32E230系列超值型微控制器新品,并宣布开启Arm® Cortex®-M23内核普及应用的全新世代。详细介绍请看兆易创新官网,相关官方资料点击下载。

声明:本人非GD官方人员,只是众多嵌入式软件开发者的一员,把自己开发调试的过程,用笔记的形式记录。


目录


前言

初识

点灯

分析

结语


前言


近两年国内在电子芯片行业,发生了两个比较大的事件:“中兴事件”和“华为事件”;种种迹象表明,在未来的一段时间,老外的芯片都有可能出现不可预期的断供或者无限期延时供货的情况。

一部分国内电子产品厂商开始走向芯片国产化之路,为国货中的关键芯片寻找国产芯片,未雨绸缪,我所在的公司也成为了这一部分厂商之一,经过一段时间的寻找,最终在2019年底,作为开发者的我在这样的情形下,也开始了从STM32到GD32之旅。


初识


遇到一颗全新的MCU,先阅读这颗MCU的Datasheet,会有助于快速了解这颗陌生的MCU,经过激烈选型会议,我们决定用GD32E230C8T6来替换现在所使用的STM32F030C8T6。GD32E230C8T6这里我就不过多的介绍了,详细请看GD官方的GD32E230xx_Datasheet文档;

仔细读 Datasheet 的时候你就会发现,卧槽~,PIN脚这不是跟 STM32F030C8T6 一毛一样吗?是的,就是这样,兆易创新的目的很明确,这就是用来替换 STM32F030C8T6 的,功能基本不缺,该有的都有,没有的也有,而且成本还更便宜,看到这里,硬件工程师要集体高潮了,PIN对PIN直接替换上去不就可以了,完美的替换方案,PCB 都不用改的,然而,苦逼的永远是软件工程师,硬件底层驱动程序仍然需要一点一点的调试;选型会议上面,还是干不过硬件和成本,最后老大拍板了,就这个了。

作为软件工程师虽然很苦逼,但是仔细思考一下,此时也体现出了软件工程师的价值…喝下这口鸡汤,开干吧!


点灯


等待一周之后,收到了代理商寄给来的样片和 demo 板,看了几天的开发资料了,终于有开发板了,仔细一下就是GD官方GD32E230C_START开发板如下图 ↓

GD32E230C_START开发板

拿到开发板,一定要仔细看官方的文档,尤其是这种官方出的开发板,看看原理图,先老老实实的按照文档 GD32E230C-START评估板用户指南_V1.0 搭建开发环境, MDK 建议 5.25 以上,支持 M23 内核,过程不多说了。

搭建好开发环境,点个灯吧,demo 例程编译,下载,你就会看到开发板上面四个流水灯,经典的一逼!经典归经典,经典有经典的存在,点灯看起来很简单,其实有很大的意义:

1. 编译成功:开发环境没有问题,这是干活最基本的工具;

2. 下载成功:看来开发工具没有问题,这是后续开发的基础;

3. 流水灯运行成功:说明 MCU 从上电到正常运行,软件编程有效;


分析


1.  详细说一下点灯例程意义第三点,结合代码看一下,先看下 main 函数你可以看到,systick_config 里面可以看到延时程序的设置, 再往下可以看到GPIO 的配置和使用过程,这里不深究了,再深究就到寄存器里面了,总之这里可以让我们简单的了解开发流程。

int main(void)
{systick_config();/* enable the LED1 GPIO clock */rcu_periph_clock_enable(RCU_GPIOA);/* configure LED1 GPIO port */ gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);/* reset LED1 GPIO pin */gpio_bit_reset(GPIOA,GPIO_PIN_7);

2. 看也看了,分析也分析了,是不是觉得卧槽,尼玛一个点灯,让你讲的很牛B的样子,其实漏了一个非常重要的东西,时钟!!MCU的主频现在设置的是多少??main 函数并没有设置时钟,去哪里找?参考STM32的开发,先看一下有没有启动文件,果然存在,打开看一下:

Reset_Handler   PROCEXPORT  Reset_Handler                     [WEAK]IMPORT  SystemInitIMPORT  __mainLDR     R0, =SystemInitBLX     R0LDR     R0, =__mainBX      R0ENDP

看到这里是不觉得好熟悉,那还犹豫什么啊,SystemInit 函数走起~~~~

void SystemInit (void)
{/* enable IRC8M */RCU_CTL0 |= RCU_CTL0_IRC8MEN;while(0U == (RCU_CTL0 & RCU_CTL0_IRC8MSTB)){}/* reset RCU */RCU_CFG0 &= ~(RCU_CFG0_SCS | RCU_CFG0_AHBPSC | RCU_CFG0_APB1PSC | RCU_CFG0_APB2PSC |\RCU_CFG0_ADCPSC | RCU_CFG0_CKOUTSEL | RCU_CFG0_CKOUTDIV | RCU_CFG0_PLLDV);RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PLLMF | RCU_CFG0_PLLMF4 | RCU_CFG0_PLLDV);RCU_CTL0 &= ~(RCU_CTL0_HXTALEN | RCU_CTL0_CKMEN | RCU_CTL0_PLLEN | RCU_CTL0_HXTALBPS);RCU_CFG1 &= ~(RCU_CFG1_PREDV);RCU_CFG2 &= ~(RCU_CFG2_USART0SEL | RCU_CFG2_ADCSEL);RCU_CFG2 &= ~RCU_CFG2_IRC28MDIV;RCU_CFG2 &= ~RCU_CFG2_ADCPSC2;RCU_CTL1 &= ~RCU_CTL1_IRC28MEN;RCU_INT = 0x00000000U;/* configure system clock */system_clock_config();#ifdef VECT_TAB_SRAMnvic_vector_table_set(NVIC_VECTTAB_RAM,VECT_TAB_OFFSET);
#elsenvic_vector_table_set(NVIC_VECTTAB_FLASH,VECT_TAB_OFFSET);
#endif
}

剩下的看 GD32E230_gujiankuyonghuzhinan_V1.0,GD32E230xx_Datasheet_Rev1.3这两个文档吧,你会找到答案的,不多说,受人以鱼,不如受人以渔!


结语


1. 今天就到这里吧,也算一个入门吧。

2. 吐槽一下这个开发板,板载的是 GD-LINK,大眼一看你就会知道,想掰下来,没门,想拥有一个板载的 GD-LINK 都不行,看一下官网 GD-LINK 价格,299?! 深呼吸平复一下心情,既然支持SWD,要什么GD-LINK,要什么299!直接用 J-LINK 开发它不香吗??

3. 当我觉得接下来可以快快乐乐的用 J-LINK 开发的时候,结果又被上了一课,别说SWD 接口了, SWD 的 IO 口都没有引出来, 想用其他调试工具,不好意思,飞…飞…线吧…吧…我尼玛,真的想打人了啊?!再次深呼吸,既然都 PIN 对 PIN 了,找个STM32F030C8T6的开发板,直接替换不就有了。

4. 废话不多说,开始吧,下次分享使用 J-LINK 开发的过程!


原创不易,禁商用,可转载,但记得通知我一声!说实话,码字真的很费时间啊!!


GD32E230开发初体验相关推荐

  1. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  2. Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏

    上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...

  3. Windows Embedded CE 6.0开发初体验(三)设置Boot-loader

    在Digi CC 9P开发板中已经预置了Boot-loader和一个CE 6.0的系统,所以,我们直接启动开发板,就可以运行一个CE 6.0的操作系统.不过,我们的最终目的是要开发一个自己的CE 6. ...

  4. Windows Embedded CE 6.0开发初体验(二)CE开发环境

    CE开发环境 下面就要让今天的主角闪亮登场了--Digi CC 9P开发板.为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所 ...

  5. Windows Embedded CE 6.0开发初体验(一)Windows CE概述

    这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面,只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识,解决大家会在实际开发中碰到的 ...

  6. 低代码开发初体验一分钟——Jeecg-Boot 在线报表开发

     Online开发系列专题 1. online 表单开发 2. online 报表开发 3. online 流程开发 Online开发--初体验(在线配置图表) 01 通过JSON数据,快速配置图形报 ...

  7. Online开发初体验——Jeecg-Boot 在线设计流程

    Online开发--初体验(在线设计流程) 01 在线设计流程 02 在线设计流程和表单对接 03 表单业务申请 演示在线设计流程 演示在线设计流程与表单对接 演示业务OA申请

  8. 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》

    Harmonyos(鸿蒙)开发初体验,华为如何引领物联网时代 华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人.设备.场景有机地联系在一起,将消费者在全场景生活 ...

  9. XPe开发初体验:XPe概述

    作者:iwinembed 转自:http://blog.itpub.net/16803921/viewspace-504417/ XP Embedded是微软Windows Embedded产品线中非 ...

  10. Android开发初体验

    Android开发初体验 本次开发的应用能提出一道道问题,用户点击TRUE或者FALSE来回答问题,该应用则即时做出反馈. 一·该应用由一个activity和一个布局(layout)组成,我们先创建一 ...

最新文章

  1. Jquery获取对象的几种方式介绍
  2. 5、位运算符(7个):实例
  3. Mysql不同存储引擎的表转换方法
  4. TCP的流模式与UDP的报文模式对比
  5. JEECG v2.3 发布,基于代码生成器的智能开发框架
  6. 试图加载格式不正确的程序_好程序员大数据学习路线之hive存储格式
  7. android系统知识(8.0)---Android O 启动优化
  8. wireshark 开始抓包
  9. mysql myisam表加索引_MyISAM和InnoDB的索引实现
  10. 数据分析数据挖掘(三)
  11. 564. 寻找最近的回文数
  12. Mybatis源码导入
  13. 【python】sys模块操作使用
  14. fmodex.dll已加载,但找不到入口点怎么解决?
  15. 传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)
  16. html 倒计时特效,JS节日倒计时特效(精确到毫秒)
  17. unity3d api 中文文档_unity3D游戏开发工程师完整简历范文
  18. 彻底消除电脑中的流氓软件与广告弹窗
  19. Negroni源码分析
  20. 网站网页快速变灰方法

热门文章

  1. JavaEE Day10 JavaScript高级
  2. mysql数据类型强转
  3. jsp高校科研项目管理系统
  4. Tableau 自定义调色板及应用全流程讲解【保姆级】
  5. 视频内容付费系统整站源码
  6. linux中grep命令,Linux下grep命令详解
  7. 电脑无限循环cmd代码 Window系统下死循环
  8. Rufus制作USB启动盘
  9. java 权限管理都用什么_java权限管理框架有哪些?
  10. 多个完整设计的单片机、8086、STM32制作教程和资料-转发分享