【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.其他任务删除
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fa06ef4f16f34650b9e5ce1b3

在这里插入图片描述
下面这种由于freertos机制是删除不了的

7.演示3

任务删除

8.任务空闲

在创建任务时,会有静态创建,也有动态创建
在这里插入图片描述
在这里插入图片描述
而attr是任务结构体位全局变量,没有初始化的默认为NULL,所以mem=0
为动态创建,需要手动删除,释放空间,在vtaskdelete中实现,如果其他任务删除该任务就会释放空间,如果是自己删除自己,就会交给空闲任务来释放该删除任务空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#小多子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值