Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GD32
原创征文
梁山派GD32F450/470-RT-Thread Nano 移植(一)
发布于 2023-09-21 21:25:35 浏览:444
订阅该版
本文是在keil中给梁山派移植RT-Thread Nano版本 ------------ 之所以使用Nano版本,是因为暂时对软件包没什么需求,只是想使用RT-Thread的内核,而Nano版本正好满足我目前的需求,所以最后选择Nano版本进行移植。 下面是Nano版本的简介  [Nano移植文件.7z](https://club.rt-thread.org/file_download/53d131fde2ac8b45) 先给文件,文件信息如下  移植步骤如下: 1、准备好一份梁山派的例程文件,在上面的压缩包中已经给出 不过如果你想获得更多的梁山派例程文件,可以在这个链接中找到 [立创开发板-梁山派教程文档](https://lckfb.com/docs/lckfb_lspi/#/ "立创开发板-梁山派教程文档") 或者是这个链接[立创梁山派](https://lceda001.feishu.cn/wiki/JNDHwxPWWi99CJk6SkMc6Z3Yn2e "立创梁山派") 这些都是嘉立创官方建立的梁山派资料文档 2、在keil上安装RT-Thread Nano Pack(如果已安装,直接进入下一步) 有两种方式,在keil在线下载,或离线安装,我个人推荐离线安装,毕竟我从没在keil中安装成功过,所以我这里仅介绍离线安装方式 [RealThread.RT-Thread.3.1.5.pack](https://club.rt-thread.org/file_download/c1a3b6510121434a) 将上面的Nano离线安装包下载,安装即可 3、将RT-Thread Nano添加到工程中 打开一个梁山派的例程,我上面打包好的库函数点灯的程序就可以,然后如图勾选点确认即可  可以看到RT-Thread Nano已经添加到工程中去,别看文件很多,可我们需要且能修改的文件也只有board.c和rtconfig.h这两个文件  4、系统时钟配置 打开board.c文件,有两个函数需要我们处理,分别是rt_os_tick_callback和rt_hw_board_init,一个负责系统调度(提供节拍),一个负责系统初始化  4.1首先是rt_hw_board_init,我们先将其扩展出去,使其能够被其他文件调用,在rtconfig.h中添加如下代码 ```c extern void rt_os_tick_callback(void); ```  然后将其放到滴答定时器中断服务函数中,该服务函数在gd32f4xx_it.c文件中,如下图所示(须在该.c文件中添加对应头文件,如下第二张图所示)   需要注意的是,这个滴答定时器进入中断的周期应为1ms,而在本程序中滴答定时器的周期正是1ms,所以无需修改,该周期的配置在systick.c文件中的systick_config函数中修改,该函数正是滴答定时器的初始化配置函数  4.2然后是rt_hw_board_init,这个函数我个人理解是负责系统初始化的函数,该函数的配置只需要将下图中选中的部分删去即可  5、最后处理 此时移植已经基本完成,但如果我们点击编译,会发现还是会报两个错,如下图所示  原因是RT-Thread 会接管异常处理函数 HardFault_Handler() 和悬挂处理函数 PendSV_Handler(),而在gd32f4xx_it.c已经对这两个函数进行了定义,相当于冲突了,所以我们删去gd32f4xx_it.c中的这两个函数即可   删去后编译0错误0警告  ------------ 以上就是移植的全过程 搞个例程试一下 将main函数中的初始化函数放到board.c文件中的rt_hw_board_init函数里(注意在board.c引用相应头文件)   将如下代码对main.c中的代码进行替换 ```c /******************************************************************************** * 文 件 名: main.c * 版 本 号: 初版 * 修改作者: LC * 修改日期: 2022年04月12日 * 功能介绍: ****************************************************************************** * 注意事项: *********************************************************************************/ #include "gd32f4xx.h" #include "systick.h" #include
#include "main.h" #include "bsp_led.h" #include
#define THREAD_PRIORITY 25 #define THREAD_STACK_SIZE 512 #define THREAD_TIMESLICE 5 /* 线 程 入 口 */ void thread1_entry(void *parameter) { while(1) { gpio_bit_toggle(PORT_LED1,PIN_LED1); gpio_bit_toggle(PORT_LED2,PIN_LED2); rt_thread_mdelay(1000); } } /************************************************ 函数名称 : main 功 能 : 主函数 参 数 : 无 返 回 值 : 无 作 者 : LC *************************************************/ int main(void) { rt_thread_t tid = RT_NULL; /* 创 建 线 程 1 */ tid = rt_thread_create("thread1", thread1_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid != RT_NULL) rt_thread_startup(tid); while(1) { gpio_bit_toggle(PORT_LED3,PIN_LED3); gpio_bit_toggle(PORT_LED4,PIN_LED4); rt_thread_mdelay(1000); } } ``` 编译后无错  最终实现效果: 实现梁山派的四个小灯以1s间隔进行闪烁 实现线程调度和rtt延时函数 参考资料: 1、[基于 Keil MDK 移植 RT-Thread Nano](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-keil/an0039-nano-port-keil "基于 Keil MDK 移植 RT-Thread Nano") 2、[立创开发板-梁山派教程文档](https://lckfb.com/docs/lckfb_lspi/#/ "立创开发板-梁山派教程文档") 3、[立创梁山派](https://lceda001.feishu.cn/wiki/JNDHwxPWWi99CJk6SkMc6Z3Yn2e "立创梁山派")
6
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
子牧r
这家伙很懒,什么也没写!
文章
5
回答
5
被采纳
0
关注TA
发私信
相关文章
1
NANO 可以使用 C++ 11 嘛?
2
gd32f407 lwip 可以ping通,但是建立tcp-server不能连接
3
请问rt-thread studio什么时候可以自带适配gd32功能呢?
4
RT-THREAD-GD32303E-EVAL百度网盘链接怎么打不开呀?
5
ENV编译GD32E230提示错误
6
GD32F407的ram求助
7
GD32F107VCT6 移植问题
8
RT-Thread stdio 支持GD32吗
9
有项目从STM32转到GD32平台的么?请问代码改动的工作量会不会非常大?
10
GD32E230G8 使用TIMER0 比较模式,初始化死机。
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
LWIP
Env
AT
SPI
Bootloader
FinSH
ART-Pi
CAN总线
Hardfault
USB
文件系统
RT-Thread
DMA
SCons
线程
MQTT
RT-Thread Nano
STM32
RTC
rt-smart
ESP8266
flash
ota在线升级
WIZnet_W5500
FAL
I2C
packages_软件包
UART
cubemx
freemodbus
潘多拉开发板_Pandora
定时器
BSP
PWM
ADC
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
SDIO
Debug
AB32VG1
MicroPython
编译报错
C++_cpp
msh
ulog
QEMU
本月问答贡献
出出啊
1501
个答案
338
次被采纳
小小李sunny
1390
个答案
276
次被采纳
张世争
715
个答案
157
次被采纳
crystal266
522
个答案
153
次被采纳
whj467467222
1216
个答案
146
次被采纳
本月文章贡献
出出啊
1
篇文章
12
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
2
篇文章
2
次点赞
crystal266
2
篇文章
5
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部