初探RT-Thread系统在GD32E103x芯片上的使用,点亮LED灯
初探RT-Thread系统在GD32E103x芯片上的使用,点亮LED灯
前言
随着中美贸易战的加剧,很多公司越来越重视使用国产技术的重要性。使用国产技术,一方面可规避国外对技术的封锁造成产品核心技术的断供,另一方面还可以支持国内技术的迭代和进步。
兆易创新国内一家致力于开发先进存储器技术和IC解决方案的公司,具有丰富的产品线,基于ARM内核开发了多款MCU,而在该篇文章中我们只介绍一款MCU的使用,其是GD32E103C8T6。官网地址:https://www.gigadevice.com/zh-hans/
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支持包,下载地址:http://www.gd32mcu.com/cn/download/7?kw=GD32E1,文件分别对应GD32E10x Firmware Library和GD32E10x_AddOn_V1.1.0.rar。
Keil开发准备工作
1、Keil导入GD32E10x软件支持包,操作按照如下图序号操作,在弹出文件选择框中选择GigaDevice.GD32E10x_DFP.1.1.0.pack包进行安装,该包存在下载GD32E10x_AddOn_V1.1.0.rar压缩包中。
2、Keil下载RT-Thread内核,安装选择如下图所示。此处选择安装最新版本3.1.1。
完成上述准备工作,则可进行接下来的开发了。
开发工作
创建工程
依次选择,菜单栏->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\system_gd32e10x.c文件。
在User中添加User目录下的所有C文件。
在Startup中添加Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\ARM\startup_gd32e10x.s
右击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 处理器的移植,只需要简单修改代码即可使用。删除gd32e10x_it.c文件中PendSV_Handler和SysTick_Handler函数,因为RT-Thread重新定义了这两个中断函数。在此点亮LED灯的应用中,选择在空闲进程中的钩子函数中更新看门狗重装载计数器(喂狗操作),所以在rtconfig.h将 #define RT_USING_IDLE_HOOK字符串前面的注释符号去掉,使得空闲钩子使能。该应用中选择开启动态分配内存,所以在rtconfig.h将#define RT_USING_HEAP去掉,开启该功能。
编写应用
该项目的应用代码全部放在了User文件夹中,详细代码工程下载地址:
烧写固件运行
编译完成即可通过ST-link工具将代码烧写至芯片运行。
注意:关于GD芯片固件库和软件支持下载地址:http://www.gd32mcu.com/cn/download/6?kw=GD32E1
初探RT-Thread系统在GD32E103x芯片上的使用,点亮LED灯的更多相关文章
- 天启android5.1系统无法在非1650批次号的rk3288w芯片上启动
天启android5.1系统无法在非1650批次号的rk3288w芯片上启动 挂掉log,说明在rtc初始化后挂掉 [ ) HIGH! ======== [ [ [ 1.420258] [WLAN_R ...
- 擦掉STM32F429芯片上的数据的一个方法
刚入手一块STM32F429Discovery.手痒痒的,准备写个程序进去.一不小心,把MCU的调试接口SW.JTAG全部给禁用了.这下可坏了,写不进去程序,擦不掉数据.愁的某家一头大汗.突然想起了当 ...
- C++框架_之Qt的窗口部件系统的详解-上
C++框架_之Qt的窗口部件系统的详解-上 第一部分概述 第一次建立helloworld程序时,曾看到Qt Creator提供的默认基类只有QMainWindow.QWidget和QDialog三种. ...
- 微信公众号弹出框在IOS最新系统中点击键盘上的“完成”导致事件无法触发问题
微信公众号弹出框在IOS最新系统中点击键盘上的"完成"导致事件无法触发问题 问题描述 微信公众号中有项功能是弹框模态框,输入信息后保存操作.但是在IOS系统中发现,当输入内容后,点 ...
- Unity 5着色器系统代码介绍(上)
http://forum.china.unity3d.com/thread-25724-1-10.html Unity 5着色器系统代码介绍(上) Unity在着色器开发方面提供了很大的灵活性.有些工 ...
- [Fw]初探linux中断系统(2)
初探linux中断系统(2) 中断系统初始化的过程 用来初始化中断系统的函数位于arch/x86/kernel/irqinit.c,定义如下 void __init init_IRQ(void){ i ...
- Linux运维面试题:请简要说明Linux系统在目标板上的启动过程?
Linux运维面试题:请简要说明Linux系统在目标板上的启动过程? 该问题是Linux运维面试最常见的问题之一,问题答案如下: 1.用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备( ...
- RT Thread 通过ENV来配置SFUD,操作SPI Flash
本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread& ...
- CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上
一.什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据.在很多年前,CPU的频率与内存总线的频率在同一层面上.内存的 ...
随机推荐
- Tomcat 第三篇:总体架构设计
Tomcat 总体架构设计 在开始这篇文章的时候,忽然发现上一篇内容的题目不是很合适,不应该叫启动流程,更确切的应该是叫启动脚本. 在最开始,先介绍下 Tomcat 的总体设计,先有一个大概的印象,对 ...
- Halcon使用骨架法处理激光条并拟合直线
dev_close_window () * 设置颜色 dev_set_color ('green') * 读取图像 read_image (Image, 'images3/1') * 获得图像尺寸 g ...
- 关于bat中日期时间字符串的格式化
在其他编程语言中,要实现日期时间字符串的格式化,包括时间计算,都是比较简单的 但在bat或者说cmd.dos中要实现这些功能.还是有一定难度的 首先,windows的cmd中可以使用%date%表示日 ...
- pwnable.kr-coin1-witeup
是一个小游戏,会给100堆小硬币,在每堆硬币中找到假币(重量为9,其他重量为10),其中每堆硬币都设置了金币数和固定的尝试次数. 思路是:在每堆硬币中,在有限的尝试次数中对硬币通过二分法计算硬币重量不 ...
- 推荐一个超牛的SpringCloud微服务项目,开发脚手架
前言 Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权.认证后台管理系统,其中包含具备用户管理.资源权限管理.网关API 管理等多个模块,支持多业务系统 ...
- 基于SpringBoot+SpringDataJpa后台管理
昨天朋友找我喝酒,说30岁了,比较焦虑,钱没赚到,整天被媳妇数落. 其实现在我们看到的不一定就事真实的情况,就算从高斯分布看,平平淡淡的人生才是大部分人的轨迹.当然抖音.知乎上的不能比,人均收入百万, ...
- ORA-00060: Deadlock detected 模拟死锁产生与解决方案
死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程 ...
- Generator函数在流程控制中的应用
扯蛋 做了两年的Nodejs全栈开发,不知道为什么跑来做游戏呢(大概是厦门nodejs不好找工作吧).用的是网易的pomelo的游戏框架.现接手了一个棋牌游戏:二十一点,不懂的规则的可以自行百度. 二 ...
- C#方法Extra
C#方法Extra 上次说的只是方法的一些基本东西,今天讲讲重载和 Lambda 表达式. 重载 方法的重载(overload)指的是同一个名字的方法,有着不一样的方法签名(method signat ...
- 一次性升级所有python包的靠谱并且简单的方法
1. 用pip-review包pip install pip-review #安装包pip-review --auto #自动批量升级指令2. 编写代码import pipfro ...