stm32使用Keil创建RTOS工程

芯片选择STM32,使用Keil创建RTOS。直接使用Keil自带的RTX5,简单方便。也可以选择用STM32CubeMX创建FreeRTOS。都是用CMSIS-RTOS2给封装了一层。用的API函数都一样。RTX5和FreeTOS原理都类似。
tianjian
1.在Manage Run-Time Environment上点击,添加为RTOS2(API),我这里选择了Source
2.点击Resolve

在这里插入图片描述
将多出来的2个文件取消变异

在这里插入图片描述

在这里插入图片描述
将void PendSV_Handler(void),void SysTick_Handler(void),void SVC_Handler(void) 这3个中断都屏蔽掉

在这里插入图片描述
加入头文件#include “cmsis_os2.h”

osThreadId_t threadID_LED = NULL;              /* 保存线程ID */
osThreadId_t threadID_Start = NULL;            /* 保存线程ID */



/* LED线程 */
const osThreadAttr_t thread_LED_Attr =
{
	.name = "LED_App",                  	/* 线程名字 */
	.stack_size = 256,	                    /* 堆栈的大小 */
	.priority = osPriorityNormal3,           /* 线程优先级 */
	.attr_bits = osThreadDetached,          /* 线程类型 */
};

/* Start线程 */
const osThreadAttr_t thread_Start_Attr = 
{
	.name = "Start_App",				      /* 线程名字 */
	.stack_size = 512,                        /* 堆栈的大小 */
	.priority = osPriorityNormal2,	          /* 线程优先级 */
	.attr_bits = osThreadDetached,	          /* 线程类型 */
};

分别创建2个线程 ,句柄分别为threadID_LED和threadID_Start。将相关属性配置好
在这里插入图片描述开启调度

2个任务函数

void thread_LED_App(void *argment)
{
	while(1)
	{
		HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
		printf("LED is Toggle. \r\n");
		osDelay(1000);

	}
}

void thread_Start_App(void *argument)
{
	threadID_LED = osThreadNew(thread_LED_App,NULL,&thread_LED_Attr);   /* ´´½¨LEDÏß³Ì */  
	
	while(1)
	{
		printf("Thread Start is Working !\r\n");
		osDelay(1000);
		
	}

}


对于RTOS的创建便结束
CMSIS-RTOS2的官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值