基于Hal库实现FreeRTOS操作系统

基于Hal库实现FreeRTOS操作系统(二)

前言

通过STM32CubeMX生成了一个工程模板,本章我基于前者新建的工程开始基于FreeRTOS操作系统的动态任务创建方法。

任务创建的动态方法

首先,我们找到tasks.c文件(我的路径是Middleware->FreeRTOS->tasks.c,不同电脑可能路径不同,这里只是作为参考)。在这里找到xTaskCreate函数详细代码如下所示:
xTaskCreate(	TaskFunction_t pxTaskCode,                                              //创建任务块
							const char * const pcName,	                //任务块名字
							const configSTACK_DEPTH_TYPE usStackDepth,      //申请代码块大小
							void * const pvParameters,                      //返回的变量
							UBaseType_t uxPriority,                         //优先级
							TaskHandle_t * const pxCreatedTask )            //任务块句柄

由上述代码可知,动态创建一个任务,主要有六个模块组成,在在对应的文件(tasks.h)中有使用的例子。如下

 * Example usage:
   <pre>
 // Task to be created.
 void vTaskCode( void * pvParameters )
 {
	 for( ;; )
	 {
		 // Task code goes here.
	 }
 }

下面贴入我使用的代码:

#define START_STK_SIZE    120//栈大小
#define START_TASK_PRIO   1//任务优先级
TaskHandle_t StartTask_Handler;//任务句柄
void start_task( void * pvParameters )//任务函数
{
	。。。
	vTaskDelete(StartTask_Handler);//通过句柄删除任务
}
int main()
{
	。。。
    xTaskCreate((TaskFunction_t)         start_task,            //创建任务块
		(char *)                 "start_task",		//任务块名字
		(configSTACK_DEPTH_TYPE) START_STK_SIZE,        //申请代码块大小
		(void *)                 NULL,                  //返回的变量
		(UBaseType_t)            START_TASK_PRIO,       //优先级
		(TaskHandle_t *)         &StartTask_Handler );  //任务块句柄
		。。。
}

完成动态创建一个任务优先级为1,栈大小为120bit的任务。
vTaskDelete()函数同样在task.c文件中,通过任务块的句柄删除函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值