当前位置: 首页 > news >正文

【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中实现,如果其他任务删除该任务就会释放空间,如果是自己删除自己,就会交给空闲任务来释放该删除任务空间


http://www.mrgr.cn/news/28275.html

相关文章:

  • windows二进制安全零基础(二)
  • 第三章springboot数据访问
  • 蓝桥杯备赛(持续更新)
  • EHOME视频平台EasyCVR多品牌摄像机视频平台监控视频编码H.265与Smart 265的区别?
  • 11-通信图建模测试
  • 接口文档的编写
  • 16、Python如何使用临时文件和目录
  • YOLOv9改进系列,YOLOv9损失函数更换为Powerful-IoU(2024年最新IOU),助力高效涨点
  • C语言 ——— 写一个宏,将一个整数的二进制位的奇数位和偶数位交换
  • transformer模型进行英译汉,汉译英
  • Qt ORM模块使用说明
  • 95-java synchronized和reentrantlock区别
  • 深入理解指针(三)
  • FLORR.IO 绿~粉(我是专业的!)
  • java项目常用的工具类
  • 数据技术革命来袭!从仓库到飞轮,企业数字化的终极进化!
  • 进阶SpringBoot之异步任务、邮件任务和定时执行任务
  • 使用NetworkManager代替wpa_supplicant管理网络
  • php部署到apach服务器上遇到的问题
  • 利士策分享,中秋佳节:月满人团圆的文化传承与演绎
  • Matlab生成prbs7的代码
  • 双指针算法专题(2)
  • 大模型参数高效微调技术原理综述(八)-MAM Adapter、UniPELT
  • 使用 SuperCraft AI 设计书橱模型的指南
  • 数据结构(2):LinkedList和链表[2]
  • python使用Pyvis库绘制B站评论互动网络结构图