初出茅庐的小李第99篇博客FreeRTOS创建任务

开始任务创建三个任务

/* 创建开始任务 */
	xReturn = xTaskCreate((TaskFunction_t )Start_task,
												(const char* )"start_task",
												(uint16_t )START_STK_SIZE,
												(void* )NULL,
												(UBaseType_t )START_TASK_PRIO,
												(TaskHandle_t* )&StartTask_Handler); 
	if(xReturn == pdPASS)
	{
		printf("开始任务创建成功!\r\n");
	}

第1个任务LED1进行闪烁1000毫秒1次

/* 创建 LED1 任务*/
	xReturn = xTaskCreate((TaskFunction_t )Led1_task,
												(const char* )"Led1_task",
												(uint16_t )LED1_STK_SIZE,
												(void* )NULL,
												(UBaseType_t )LED1_TASK_PRIO,
												(TaskHandle_t* )&LED1Task_Handler); 
																					
	if(xReturn == pdPASS)
	{
		printf("LED1任务创建成功!\r\n");
	}

第2个任务LED2进行闪烁500毫秒1次

/* 创建 LED2 任务*/
	xReturn = xTaskCreate((TaskFunction_t )Led2_task, 
											  (const char* )"Led2_task", 
											  (uint16_t )LED2_STK_SIZE,
											  (void* )NULL,
											  (UBaseType_t )LED1_TASK_PRIO,
											  (TaskHandle_t* )&LED2Task_Handler); 
	if(xReturn == pdPASS)
	{
		printf("LED2任务创建成功!\r\n");
	}											

第3个任务进行浮点运算

/* 创建浮点运算任务 */
	xReturn = xTaskCreate((TaskFunction_t )Float_task, 
												(const char* )"float_task",
												(uint16_t )FLOAT_STK_SIZE,
												(void* )NULL,
												(UBaseType_t )FLOAT_TASK_PRIO,
												(TaskHandle_t* )&FLOATTask_Handler); 
	if(xReturn == pdPASS)
	{
		printf("浮点运算任务创建成功!\r\n");
	}								

开始任务创建三个任务后删除开始任务,开始任务创建的三个任务进行调度

int main(void)
{
	LED1_Init();
	LED2_Init();
	BEEP_Init();
	USART1_Init(9600);
  BaseType_t xReturn = 0;
	/* 创建开始任务 */
	xReturn = xTaskCreate((TaskFunction_t )Start_task,
												(const char* )"start_task",
												(uint16_t )START_STK_SIZE,
												(void* )NULL,
												(UBaseType_t )START_TASK_PRIO,
												(TaskHandle_t* )&StartTask_Handler); 
	if(xReturn == pdPASS)
	{
		printf("开始任务创建成功!\r\n");
	}
												
	/* 开启任务调度器 */ 
	vTaskStartScheduler();
}
/* 开始任务函数 */
void Start_task(void *pvParameters)
{
	BaseType_t xReturn = 0;
	/* 进入临界区 */
	taskENTER_CRITICAL();
	/* 创建 LED1 任务*/
	xReturn = xTaskCreate((TaskFunction_t )Led1_task,
												(const char* )"Led1_task",
												(uint16_t )LED1_STK_SIZE,
												(void* )NULL,
												(UBaseType_t )LED1_TASK_PRIO,
												(TaskHandle_t* )&LED1Task_Handler); 
																					
	if(xReturn == pdPASS)
	{
		printf("LED1任务创建成功!\r\n");
	}
	/* 创建 LED2 任务*/
	xReturn = xTaskCreate((TaskFunction_t )Led2_task, 
											  (const char* )"Led2_task", 
											  (uint16_t )LED2_STK_SIZE,
											  (void* )NULL,
											  (UBaseType_t )LED1_TASK_PRIO,
											  (TaskHandle_t* )&LED2Task_Handler); 
	if(xReturn == pdPASS)
	{
		printf("LED2任务创建成功!\r\n");
	}											
	/* 创建浮点运算任务 */
	xReturn = xTaskCreate((TaskFunction_t )Float_task, 
												(const char* )"float_task",
												(uint16_t )FLOAT_STK_SIZE,
												(void* )NULL,
												(UBaseType_t )FLOAT_TASK_PRIO,
												(TaskHandle_t* )&FLOATTask_Handler); 
	if(xReturn == pdPASS)
	{
		printf("浮点运算任务创建成功!\r\n");
	}												
												
	/* 删除开始任务 */
	vTaskDelete(StartTask_Handler);
	/* 退出临界区 */
	taskEXIT_CRITICAL();
}

实验现象

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值