单片机Freertos入门(二)任务的创建、删除

1、串口配置 

首先将串口进行配置,后续经常会应用,具体步骤点击:串口配置。

2、任务

 创建一个任务,就是开辟一个空间、每个任务中都会有while(1)死循环。

2.1相关函数

动态创建:xTaskCreate();

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,                 //任务函数
                        const char * const pcName,                 //任务名字(字符串类形)
                        const configSTACK_DEPTH_TYPE usStackDepth, //任务栈大小
                        void * const pvParameters,                 //传给任务的参数
                        UBaseType_t uxPriority,                    //任务优先级
                        TaskHandle_t * const pxCreatedTask )       //任务句柄

静态创建:xTaskCreateStatic();

TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,   //任务函数
                                const char * const pcName,   //任务名称
                                const uint32_t ulStackDepth, //任务堆栈大小
                                void * const pvParameters,   //传给任务的函数
                                UBaseType_t uxPriority,      //任务优先级
                                StackType_t * const puxStackBuffer, //任务堆栈(需定义)
                                StaticTask_t * const pxTaskBuffer ) //任务控制块(需定义)

删除函数:vTaskDelete();

void vTaskDelete( TaskHandle_t xTaskToDelete );

动态创建任务的堆栈由系统分配,静态由程序员自己维护,因此,通常使用动态方式进行任务创建。

2.2 任务配置

双击默认任务,如下所示:

单片机Freertos入门(二)任务的创建、删除_第1张图片

 修改任务名称:

单片机Freertos入门(二)任务的创建、删除_第2张图片

添加任务:

单片机Freertos入门(二)任务的创建、删除_第3张图片

2.3 led灯引脚配置

单片机Freertos入门(二)任务的创建、删除_第4张图片

配置完成后生成代码。

3、keil代码

3.1 LED灯宏定义

首先在main.h对LED、LED2进行宏定义

单片机Freertos入门(二)任务的创建、删除_第5张图片

#define LED_ON	HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET)
#define LED_OFF	HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET)
#define LED2_ON	HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET)
#define LED2_OFF	HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET)

3.2 不同任务点灯

单片机Freertos入门(二)任务的创建、删除_第6张图片

单片机Freertos入门(二)任务的创建、删除_第7张图片

效果如下:

单片机Freertos入门(二)任务的创建、删除_第8张图片

你可能感兴趣的:(单片机,嵌入式硬件)