【FreeRTOS】任务
1.使用stm32cubemx配置freertos
2.创建任务
我们需要在MX_FREERTOS_Init()里面创建任务
我们根据上面的任务创建方式,实现GPIO_PIN_10的反转
1.任务句柄
2.任务结构体
3.任务执行函数
4.任务函数声明
5.创建线程执行任务
hal_delay和osDelay区别?
hal_delay是hal库提供的,当调用该函数的任务就死等时间结束
而osDelay有一个就绪链表,构建任务都在就绪队列中,如果调用osDelay的任务,就会阻塞,将其放到阻塞队列中,等待时间结束后,将其放回就绪队列,时间片到了,就可以执行该任务.
3.演示1
freertos任务
4.多任务创建
再创建一个任务用来串口通信
1.创建任务句柄
2.创建任务结构体
3.创建任务执行函数
使用printf,再gpio.c中实现fputc
4.任务创建
5.演示2
freertos多任务
如果一个任务结束,会走到最后,清除所有中断,然后在下面死循环,以至于其他任务不能执行
所以引出下面的
6.任务删除
任务删除分为其他任务删除或者自己删除自己,这样就不会影响其他任务了
1.自杀(自己删除自己)
2.其他任务删除
下面这种由于freertos机制是删除不了的
7.演示3
任务删除
8.任务空闲
在创建任务时,会有静态创建,也有动态创建
而attr是任务结构体位全局变量,没有初始化的默认为NULL,所以mem=0
为动态创建,需要手动删除,释放空间,在vtaskdelete中实现,如果其他任务删除该任务就会释放空间,如果是自己删除自己,就会交给空闲任务来释放该删除任务空间