首次使用Freertos进行配置,操作步骤过于繁琐,浅浅记录一下
使用cubeMX生成工程,添加从github上下载移植文件及扩展资源,这里使用了定时器2作为hal延时函数产生的基准时间,系统自带的滴答计时器产生中断响应任务
将原工程添加下列文件:
添加下列四行代码:
定义变量
删除系统文件中已经定义的函数,避免与freertos文件中的函数发生重复引用
最后是编写两个任务函数,实现led的闪烁
void vTask1( void *pvParameters )
{
for( ;; )
{
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,1);
HAL_Delay(1000);
}
}
//任务2
void vTask2( void *pvParameters )
{
for( ;; )
{
HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,0);
HAL_Delay(500);
HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,1);
HAL_Delay(500);
}
}
以及主函数中的初始化
//创建任务1
// 定义函数 函数命名 分配内存 传入参数 优先级 ?
xTaskCreate(vTask1,"LED1", 128, NULL, 1, NULL);
//创建任务2
xTaskCreate(vTask2,"LED2",128,NULL,1,NULL);
//启动任务调度器
vTaskStartScheduler();
补充:①串口住在头文件#include“retarget.h”
②各任务需处在同一优先级,可使用阻塞延时函数打破不同优先级不能执行的问题