一.CubeMX添加RT-Thread操作系统组件
获取RT-Thread Nano软件包,指路:
https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc
安装RT-Thread
参考:https://blog.csdn.net/qq_36075612/article/details/107309750
二.CubeMX新建工程
这里依然选用的是STM32F103C8T6。
使用引脚PA3和PA4用于点亮LED灯,同时使能串口USART1。其他配置照旧。
SYS:
配置RT-Thread组件:
NVIC:
生成代码:
Keil打开工程代码。
三.创建任务
主要是两个LED灯任务,一个每0.5秒变化一次,一个每1秒变化一次。
在Application/USER文件夹下新建app_rt_thread.c文件,并添加以下代码:
#include "rtthread.h"
#include "main.h"
#include "stdio.h"
struct rt_thread led1_thread;
rt_uint8_t rt_led1_thread_stack[128];
void led1_task_entry(void *parameter);
//初始化线程函数
void MX_RT_Thread_Init(void)
{
//初始化LED1线程
rt_thread_init(&led1_thread,"led1",led1_task_entry,RT_NULL,&rt_led1_thread_stack[0],sizeof(rt_led1_thread_stack),3,20);
//开启线程调度
rt_thread_startup(&led1_thread);
}
//主任务
void MX_RT_Thread_Process(void)
{
printf("Hello RT_Thread!!!");
rt_thread_delay(2000);
}
//LED1任务
void led1_task_entry(void *parameter)
{
while(1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_RESET);
rt_thread_delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_SET);
rt_thread_delay(500);
}
}
找到Middlewares/RT-Thread/RTOS/kernel文件夹下的board.c文件,修改串口USART2为USART1。
在main.c文件中添加代码:
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
extern void MX_RT_Thread_Init(void);
extern void MX_RT_Thread_Process(void);
/* USER CODE END PTD */
main函数的while循环中添加以下代码作为一个新线程:
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4);
rt_thread_delay(1000);
编译运行:
四.参考链接
https://blog.csdn.net/qq_36075612/article/details/107309750
https://blog.csdn.net/qq_47281915/article/details/121877234
版权声明:本文为CSDN博主「机智的橙子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45659777/article/details/121891583
暂无评论