完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
mdk527版本可以直接使用软件包方式进行移植,简单几步就可以完成,网上教程挺多,正点原子论坛也有教程,这里不赘述!本篇文章使用的是比较新的版本rt_thread nano(3.0.3)版本。nano版本是master版本的简洁版,新手使用建议采取这个版本就行,后期也很方便进行功能扩展,不用担心。
本文档主要参考野火的《RT_Thread内核实现与应用开发实战指南》 准备工作
下载软件包之后,得到一个exe为后缀的文件,点击安装即可,安装目录与keil安装目录一致,成功安装后可以在keil安装目录看到此软件包的所有文件 也可以在keil软件包管理页面看到 裸机工程添加rt_thread源码 使用软件包方式移植的工程,如果在新的没有安装rt_thread的keil中打开,会提示找不到rt_thread源文件。所以,在这里不采用软件包方式,我们把整个源码文件夹复制到我们的裸机工程根目录。 源码文件夹下所有内容如下图所示 然后复制两个文件到user文件夹中 复制rtthread3.0.3bsp文件夹下的rtconfig.h文件到user文件夹下,该文件定义了rtthread的内核功能,可以通过宏定义进行裁剪内核功能 复制rtthread3.0.3bsp文件夹下的board.c文件到user文件夹下 RT-Thread文件夹内容简介 1、bsp文件夹 bsp(board support package)板级支持包。该文件夹内是rtthread为各个半导体厂商写好的驱动程序,nano版本只有少量几款开发板驱动,master版本有更多。我们现在只关心这个文件夹下的board.c 和rtconfig.h两个文件,前者是用来初始化开发板硬件的相关函数,后者是进行配置rtthread功能的 2、components文件夹 RT_Thread除了内核文件,其他由第三方添加的软件都是组件,比如gui、fatfs、lwip、和finsh。这些组件都放在此文件夹内,目前nano版本只有finsh,其他都被删除。finsh是RT_Thread中最有特色的组件,他通过串口打印的方式输出各种信息,方便我们调试程序。 3、include文件夹 从文件夹名字就可以看出此文件夹是存放RT_Thread内核的头文件,是不可分割的一部分 4、libcpu文件夹 RT_Thread是一个操作系统,单片机是硬件实物,需要由接口文件讲 两者结合在一起,这些文件通常由汇编和C语言联合编写,真正的移植应该是编写这些文件,但是这些文件通常由RT_Thread和mcu原厂人员负责,这些文件存放在此文件夹内,我们只需要选择对应的文件(cortex-m3)加入到自己工程即可. 5、src文件夹 该文件夹内存放的是RT_Thread内核的源码,详细了解可以参考RT_Thread官网文档中心学习,有视频教程学习内核! 添加RT_Thread源码到工程组文件夹 刚刚只是把源码文件放在了本地工程中,还没有添加到开发环境的组文件夹中 1、新建两个组,rtt/source和rtt/ports rtt/source用于存放src内的文件内容。 rtt/ports用于存放libcpuarmcortex-m?文件夹的内容,此处?取决于开发板使用的芯片,精英版使用的是cortex-m3。 2、将rtconfig.h和board.两个文件添加到user组文件夹内。 3、指定RT_Thread头文件路径 包含源码中所有有H文件的文件夹 config.h文件修改 注释掉头文件RTE_components.h,因为这个文件是使用软件包时自动生成的,这里我们没有使用,所以没有这个文件,需要注释掉。 修改RT_THREAD_PRIORITU_MAX、RT_TICK_PER_SECOND和RT_MAIN_THREAD_STACK_SIZE这三个宏大小 board.c文件修改 修改内容也不多,首先systick相关的寄存器定义和初始化函数,这是与处理器有关的,稍后直接使用固件库函数就应,可以把这部分注释掉 RT_Thread启动时会调用rt_hw_board_init()的函数,从名字可以看出来是进行初始化开发板硬件的,比如时钟,串口等,初始化完成后才继续向下启动。 注释掉部分代码,系统时钟由固件库提供 再在user文件夹下新建一个board.h头文件,用来包含固件库和bsp相关的头文件,并存放board.c 中的函数声明,此头文件包含在board.c文件内,代码如下 #ifndef _BOARD_H_ #define _BOARD_H_ /* ***************************************************************** * 包含的头文件 ***************************************************************** */ /*stme32 固件库文件*/ #include "stm32f10x.h" /* 开发板硬件bsp头文件*/ #include "led.h" /* ***************************************************************** * 函数声明 ***************************************************************** */ void rt_hw_board_init(void); void SysTick_Handler(void); #endif /* _BOARD_H_*/ 修改main.c函数 删除原裸机工程中的main.c文件内所有内容,新增如下内容 main.c文加内加入了一个静态线程,相关知识可以自行学习,下载到精英版可以看到led灯闪烁 led的初始化函数在board.c文件中的rt_hw_board_init()函数被调用 #include "board.h" #include "rtthread.h" /* ***************************************************************** * 变量 ***************************************************************** */ /*定义线程控制块*/ static struct rt_thread led1_thread; /*定义线程控制栈时候 需要进行字节对齐 */ ALIGN(RT_ALIGN_SIZE) /*定义线程栈*/ static rt_uint8_t rt_led1_thread_stack[1024]; /* ***************************************************************** * 函数声明 ***************************************************************** */ static void led1_thread_entry(void *parameter); /* ***************************************************************** * main函数 ***************************************************************** */ int main(void) { /* *开发板硬件初始化,RTT系统初始化时候已经在main()函数之前完成 *即在compoment.c文件中的rtthread_startup()函数中完成了 *所以在main函数中只需要创建线程和启动线程即可 */ rt_thread_init(&led1_thread, "led1", led1_thread_entry, RT_NULL, &rt_led1_thread_stack[0], sizeof(rt_led1_thread_stack), 3, 20); rt_thread_startup(&led1_thread); } /* ***************************************************************** * 线程定义 ***************************************************************** */ static void led1_thread_entry(void *parameter) { while(1) { LED0 = 0; rt_thread_delay(100); LED0 = 1; rt_thread_delay(100); } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:18 , Processed in 0.593552 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号