CubeMax添加Rtthread操作系统 组件STM32F103
本篇主要介绍,怎么使用STM32CubeMx工具,添加RT-Thread操作系统组件,码代码的IDE是keil。快速移植RT-Thread实时操作系统,所用的IDE可自行官网下载最新版。 CubeMax官网下载链接 RTthread 文档中心
一、建立工程
在开始之前我们可以先建立一个简单过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/7edb39d198834711a5e748f57f1a3bc3.png)
选择对应型号的芯片这里是STM32F103C8T6
![在这里插入图片描述](https://img-blog.csdnimg.cn/b587c619a764462d936674957cde3345.png)
二、下载RTT相关组件
获取 RT-Thread NANO软件包,https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc 这里我们可以直接下载然后从本地添加进去,也可以直接在线添加 输入该网址即可。 点击Software Packs 选择里面的Manage Software Packs ![在这里插入图片描述](https://img-blog.csdnimg.cn/976f2684a7a444aba3fd61a6c073c9f2.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d0b5ce678f4c4166be63bbfdf597a005.png)
我这里已经添加过来 所以下面有显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/f645dda5a1054f679d0b5e6273fa70ae.png)
安装成功的显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/4bc195b299c7455ba97e520440b8e86b.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/3c73af84a0d24608a55b51a08a68565d.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/6e425f42b4934b10b2ccba14a68423fa.png)
然后就有RTT相关的包了
![在这里插入图片描述](https://img-blog.csdnimg.cn/0aeca46fc6d44fc2bca60b36a8834915.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/ac8b136ea8394b95b55052e3ab7f7130.png)
注意NVIC里面有几个配置需要我们屏蔽掉 在THthread里面有相同的配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/8630da87b4414364970dddd3663e19de.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/b3ed34d8f0eb475fb366d48a0f1b9a7d.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/5e501bfa5ee14aec853b0647c1c51be4.png)
下面进行时钟和引脚的配置 后就可以生成工程了 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2c25f1b7350042aba5c59926a1e8e839.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2424660a82ce4fea82f12c9eafac3fc2.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/1989008285c84dff9bc28c61e98818df.png)
引脚配置为PC13 LED为例
![在这里插入图片描述](https://img-blog.csdnimg.cn/a8c7dfcb2d614ba48bea055e4da2f463.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/6899560c55c6444f8142c74580422bec.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/e29c60b02dcb4f9898305742206ab2cb.png)
最后在生成代码即可,成功后打开工程 编译完发现有几个串口相关的错误,原因是在RTT中有使用串口,我们在MX中并没有进行配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/fcf68b0805de4fb1b1d051621872abfb.png)
查看从错误可知 配置为串口2 我们去CubeMax中进行配置 重新生成个成功在编译即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/a96c195532864346a51580eb7a4f530a.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d7c86d87538d43298d7a390912619f00.png)
编译完之前的串口相关的错误就没有了,还剩下一个错误
![在这里插入图片描述](https://img-blog.csdnimg.cn/28888bf4e7db4140bdaa59ca78fcb6c0.png)
…/Middlewares/Third_Party/RealThread_RTOS/components/finsh/finsh_port.c(14): error: #35: #error directive: Please uncomment the line <#include “finsh_config.h”> in the rtconfig.h
![在这里插入图片描述](https://img-blog.csdnimg.cn/a065e10dc19a4ed487f1605a5f0fe6e2.png)
解决方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/7c54039cd3e84561a10d9566969df6be.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/1801075932634eb2a153151e3d5ff268.png)
app_rt_thread.c
添加app_rt_thread.c 和app_th_thread.h 应用文件 在里面实现点灯操作
#include "rtthread.h"
#include "app_rt_thread.h"
#include "stdio.h"
#include "main.h"
struct rt_thread led_thread;
rt_uint8_t rt_led_thread_stack[128];
void led_task_entry(void *parameter);
void MX_RT_Thread_Init(void)
{
rt_thread_init(&led_thread,"led",led_task_entry,RT_NULL,&rt_led_thread_stack[0],sizeof(rt_led_thread_stack),3,20);
rt_thread_startup(&led_thread);
}
void led_task_entry(void *parameter)
{
while(1)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
rt_thread_delay(500);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13, GPIO_PIN_RESET);
rt_thread_delay(500);
}
}
app_rt_thread.h
#ifndef _APP_RT_THREAD_H_
#define _APP_RT_THREAD_H_
void MX_RT_Thread_Init(void);
#endif
main.c
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "app_rt_thread.h"
void SystemClock_Config(void);
int main(void)
{
MX_RT_Thread_Init();
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART2_UART_Init();
while (1)
{
}
}
实验现象LED以500ms间隔亮灭
工程源码需要可自行下载
链接:https://pan.baidu.com/s/1cuteK0HZfUVrvzoYAzlh9w?pwd=9u4t 提取码:9u4t –来自百度网盘超级会员V5的分享
|