dtcms插件 QuarkXPress Markdown Java程序员 wcf automation variant static jScroll Draggabilly seo教程下载 jquery获取最后一个子元素 js获取焦点事件 float占几个字节 jquery拼接字符串 java数据分析 linux撤销 axure时间选择控件 kubernetes视频教程 python随机函数 pythonlist python搭建环境 python安装配置 python中的index python环境变量配置 python编程工具 java基础语言 java文件流 java接口怎么写 java字符串比较 java实例方法 java安装与配置 linuxls命令 linux格式化命令 骁龙660和625 视频加字幕软件哪个好 js闭包的理解 ad19 方正兰亭字体下载 七宗罪游戏下载
当前位置: 首页 > 学习教程  > python

RT-Thread:RT-Thread-smart移植到GD32E103

2021/2/7 11:43:16 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

文章目录前言一、替换文件、裁剪工程二、修改各种编译错误二、移植代码三、编写main函数总结前言 之前移植过RT-Thread Nano版本,但是这个版本是简易版的,这次我们借助RTT官方RT-Thread-smart版本现有的GD32F303E-EVAL代码来移植我们的GD32E103R。 一、…

文章目录

  • 前言
  • 一、替换文件、裁剪工程
  • 二、修改各种编译错误
  • 二、移植代码
  • 三、编写main函数
  • 总结


前言

之前移植过RT-Thread Nano版本,但是这个版本是简易版的,这次我们借助RTT官方RT-Thread-smart版本现有的GD32F303E-EVAL代码来移植我们的GD32E103R。

一、替换文件、裁剪工程

1、复制一个GD32F303的工程,修改工程名为gd32e103,将里面Libraries文件夹中的文件替换成官方提供的GD32E103的GD32E10x_Firmware_Library文件夹下的所有文件。
官方文件:
在这里插入图片描述
RTT官方gd32f303e的Libraries文件夹文件:
在这里插入图片描述
替换对应芯片库文件:
在这里插入图片描述
2、使用env对工程进行最简化
只开启串口1:
在这里插入图片描述
关闭文件系统:
在这里插入图片描述
禁用spi:
在这里插入图片描述
禁用USB HOST:
在这里插入图片描述
不使能这些库:
在这里插入图片描述
3、退出保存,输入scons --target=mdk5重新生成工程

二、修改各种编译错误

1、修改Libraries的文件路径
在这里插入图片描述
2、修改宏为USE_STDPERIPH_DRIVER,GD32E10X,GD32E103R_START
在这里插入图片描述
3、更换芯片型号
在这里插入图片描述
4、删除异常文件,新添我们的文件,路径为GD32E10x_Firmware_Library\GD32E10x_standard_peripheral\Source、GD32E10x_Firmware_Library\CMSIS\GD\GD32E10x\Source、GD32E10x_Firmware_Library\CMSIS\GD\GD32E10x\Source\ARM在这里插入图片描述
在这里插入图片描述
5、修改board.h文件
在这里插入图片描述
6、修改文件名,理论上下面有关于gd32f3033的文件都要改名,但是他们目前都不会用到,不该都是可以的,为了简便目前先不改。
在这里插入图片描述
7、根据固件库修改gd32e10x_libopt.h文件
在这里插入图片描述

#ifndef GD32E10X_LIBOPT_H
#define GD32E10X_LIBOPT_H

#include "gd32e10x_rcu.h"
#include "gd32e10x_adc.h"
#include "gd32e10x_can.h"
#include "gd32e10x_crc.h"
#include "gd32e10x_ctc.h"
#include "gd32e10x_dac.h"
#include "gd32e10x_dbg.h"
#include "gd32e10x_dma.h"
#include "gd32e10x_exti.h"
#include "gd32e10x_fmc.h"
#include "gd32e10x_fwdgt.h"
#include "gd32e10x_gpio.h"
#include "gd32e10x_i2c.h"
#include "gd32e10x_pmu.h"
#include "gd32e10x_bkp.h"
#include "gd32e10x_rtc.h"
#include "gd32e10x_spi.h"
#include "gd32e10x_timer.h"
#include "gd32e10x_usart.h"
#include "gd32e10x_wwdgt.h"
#include "gd32e10x_misc.h"
#include "gd32e10x_exmc.h"

#endif /* GD32F10X_LIBOPT_H */

8、编译发现以下三个错误。我们只要将提示gd32f30x.h文件替换成gd32e10x.h即可,把提示在man.c中的include <sfud_cfg.h>删除即可
在这里插入图片描述
9、再编译有以下错误,修改头文件为gd32e10x_exti.h即可
在这里插入图片描述
10、编译,有新错误出现,修改dev_gpio.c文件,由于原文件是对应GD32F303E的,而我们使用GD32E103没有那些GPIO所以需要修改。
在这里插入图片描述
注意:哪里提示有错误就将__GD32_PIN_DEFAULT,替换上去,因为没有这个GPIO。
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
11、再次编译,令人惊喜的是提示0错误0警告。
在这里插入图片描述

二、移植代码

1、修改board.c文件
在这里插入图片描述

/* setup systick timer for 1000Hz interrupts */
    if (SysTick_Config(SystemCoreClock / 1000U)){
        /* capture error */
        while (1){
        }
    }
    /* configure the systick handler priority */
    NVIC_SetPriority(SysTick_IRQn, 0x00U);

2、修改board.h中的动态内存池大小,GD32E103RBT6只有运行内存只有32k,我先使用24k,尽量分配大一些,现在都还不知道是否一致成功,避免定义小了遇到什么奇怪,原本这里是64k肯定会有问题的。
在这里插入图片描述
3、打开Debug,选择对应的芯片。
在这里插入图片描述
3、编译,下载和运行,一切正常。
在这里插入图片描述
4、输入ps,根据各个线程占用的栈百分比,调整一下栈分配值,尽量节省空间
在这里插入图片描述
5、修改tidle0线程栈大小
在这里插入图片描述
修改main线程栈大小
在这里插入图片描述
修改tshell线程栈大小
在这里插入图片描述
6、输入free查看总内存占用情况。
在这里插入图片描述
7、自己适当修改一下动态内存池大小,我修改成10k。
在这里插入图片描述
8、再次编译下载运行,一切运行正常。
在这里插入图片描述

三、编写main函数

1、让板子的LED闪烁一下,说明他在运行。
在这里插入图片描述

#include <rtthread.h>
#include <board.h>

int main(void)
{
    /* enable the LED2 GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOC);
    /* configure LED2 GPIO port */ 
    gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_6);
    /* reset LED2 GPIO pin */
    gpio_bit_reset(GPIOC,GPIO_PIN_6);
	
    while(1)
	{
		/* turn on LED2 */
		gpio_bit_set(GPIOC,GPIO_PIN_6);
		rt_thread_mdelay(500);
		/* turn off LED2 */
		gpio_bit_reset(GPIOC,GPIO_PIN_6);
		rt_thread_mdelay(500);
	}
}

2、代码下载。

总结

移植完成,后面会讲如何把GD25Q Flash程序嵌进去,还有如何在Flash上搭载文件系统,还有USB HOST使用,让我躺会尸...一天三篇文章还是挺累的...

本文链接: http://www.dtmao.cc/news_show_2000281.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?