錄
- 一、CubeMX添加RT-Thread作業系統組件
- 二、CubeMX新建工程
- 三、Keil里的操作
- 四、運行結果
- 小小的總結
- 參考文獻
原始碼:https://github.com/longl118/RT-Thread
一、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新建工程
- 新建專案

- 進去選擇STM32F103C8
- 配置SYS:

- 配置RT-Thread(可能會發現找不到,那我們先讓能夠找得到)
- 按以下圖示配置:


- 終于可以配置RT-Thread

- 配置NVIC:

- 配置使USART1串口使能,使引腳PA3、PA4用于點亮LED燈:

- 補個RCC配置

- 時鐘樹配置

- 配置專案


- OpenProject 在Keil中打開
三、Keil里的操作
- 新建app_rt_thread.c檔案


- 寫入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);
}
}
- 修改board.c內的串口為USART1:

- 取消rtconfig.h中注釋:

- main中添加
extern void MX_RT_Thread_Init(void);
extern void MX_RT_Thread_Process(void);

- while回圈中添加新執行緒:
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4);
rt_thread_delay(1000);
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_3);
rt_thread_delay(1000);
四、運行結果
- 燒錄后,看結果

小小的總結
- 仍舊需要注意的是燒錄時Boot0要置1,查看結果時Boot0要置0,并Reset,
- RT-thread的移植相較于uCOSII的移植來說要簡單很多了,按步驟,沒問題的,
參考文獻
- RT-thread Nano移植:https://blog.csdn.net/qq_46359931/article/details/121950851
- 基于 STM32CubeMX 添加 RT-Thread 作業系統組件(一)- 詳細介紹操作步驟:
https://blog.csdn.net/qq_36075612/article/details/107309750 - STM32F103C8移植RT_Thread:https://blog.csdn.net/weixin_56102526/article/details/121952050
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400354.html
標籤:其他
