前言
随着中美贸易战的加剧,很多公司越来越重视使用国产技术的重要性。使用国产技术,一方面可规避国外对技术的封锁造成产品核心技术的断供,另一方面还可以支持国内技术的迭代和进步。
兆易创新国内一家致力于开发先进存储器技术和IC解决方案的公司,具有丰富的产品线,基于ARM内核开发了多款MCU,而在该篇文章中我们只介绍一款MCU的使用,其是GD32E103C8T6。官网地址:
RT-Thread 是国内完全自主开发的开源的实时操作系统,被广泛应用于能源、车载、医疗、消费电子等多个行业,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。官网地址: https://www.rt-thread.org/index.html
GD32E103C8T6简介
该芯片是一款基于Cortex-M4开发的32bit处理器,最高主频可达到120M,大大提高了程序的运行的速度,同时芯片集成了许多通信接口和外设:GPIO、ADC、PWM、USART、I2C等。硬件引脚兼容STM32F103C8T6,可方便从硬件上直接替换,无须修改硬件电路。GD32E103C8T6具有可观的内部存储空间,Flash:64KB,RAM:20KB。
准备工作
硬件准备
市面上基于GD32系列芯片的开发板很少,此处,由于硬件接口兼容STM32F103C8T6,所以我买了一块基于ST的开发板,直接将原来的ST芯片替换成GD32芯片。
烧写工具使用ST-Link。
软件准备
1、Keil集成开发环境
2、GD32E10x标准固件库和keil支持包,下载地址:,文件分别对应GD32E10x Firmware Library和。
Keil开发准备工作
1、Keil导入GD32E10x软件支持包,操作按照如下图序号操作,在弹出文件选择框中选择包进行安装,该包存在下载压缩包中。
2、Keil下载RT-Thread内核,安装选择如下图所示。此处选择安装最新版本。
完成上述准备工作,则可进行接下来的开发了。
开发工作
创建工程
依次选择,菜单栏->Project->New uVersion Project->GigaDevice->GD32E103->GD32E103C8;接着在Manage Run-Time Environment窗口中选择系统内核RTOS->kernel。在创建的工程目录下新建以下文件夹:
User、Drivers、Out。
加载GD标准固件库
将之前下载的标准固件库GD32E10x Firmware Library的解压文件放到Drivers目录下,该库中包含外部设备库,启动汇编代码、第三方库以及示例工程代码。将GD32E10x_Firmware_Library\Template目录下的全部c文件和h文件复制到User文件夹下(main,systick相关文件除外)。
完善工程
右击Keil工程显示栏中的工程选择Manage Project Items,可在管理中修改工程名称,新加组,以及添加组文件。修改完成之后,显示如下图所示。
在Drivers中添加Drivers\GD32E10x_Firmware_Library\Firmware\GD32E10x_standard_peripheral\Source下的所有C文件和Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\文件。
在User中添加User目录下的所有C文件。
在Startup中添加Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\ARM\
右击Keil工程显示栏中的工程选择Optins for Target,在Output选项卡中点击Select Folder for Objects...按钮选择将编译目标保存到Out文件夹中,并选择Create HEX File。在Listing选项卡中点击Select Folder for Listings...按钮选择将编译中间生成的文件保存到Out文件夹中。
在C/C++选项卡中Define栏定义以下宏USE_STDPERIPH_DRIVER,GD32E10X,GD32E103V_EVAL,Include Paths中包含所有工程用到的H文件所属目录或者文件夹。
在Debug选项卡中选择ST-Link Debugger。
定制RT-Thread
因RT-Thread系统内核已经实现了针对Cortex-M3和Cortex-M4 处理器的移植,只需要简单修改代码即可使用。删除文件中PendSV_Handler和SysTick_Handler函数,因为RT-Thread重新定义了这两个中断函数。在此点亮LED灯的应用中,选择在空闲进程中的钩子函数中更新看门狗重装载计数器(喂狗操作),所以在将 #define RT_USING_IDLE_HOOK字符串前面的注释符号去掉,使得空闲钩子使能。该应用中选择开启动态分配内存,所以在将#define RT_USING_HEAP去掉,开启该功能。
总结
GD系列芯片很多硬件上是完全兼容STM系列的,从硬件上更换完全不需要重新调整电路板布线。如果将产品完整的从STM芯片移植到GD只需要调整软件底层代码,而GD也提供标准库,该库在一定程度上可以加快移植。
该测试项目使用的是国产MCU和国产实时嵌入式操作系统,在很大程度上实现了完全国产化(MCU内核使用的ARM的IP)。衷心希望国内很多核心方面的技术早日突破国外的封锁,甚至优于国外!
注意:关于GD芯片固件库和软件支持下载地址: