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

【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.kler.cn/a/307374.html

相关文章:

  • flutter 发版的时候设置版本号
  • Python 连接 Redis 进行增删改查(CRUD)操作
  • 利用阿里云下载 WebRTC 源码
  • Flutter Getx状态管理
  • 数据结构-集合
  • 【学习】【HTML】HTML、XML、XHTML
  • 项目实现:云备份②(文件操作、Json等工具类的实现)
  • 每日一题——第九十二题
  • Unity Apple Vision Pro 开发(九):空间锚点
  • cJSON-轻量级解析模块、字符串的神——编织STM32C8T6与阿里云信息传递的纽带
  • MAVEN如何导入项目
  • [Web安全 网络安全]-文件读取与下载漏洞
  • Vue、React 生命周期有哪些?页面数据获取放在哪个生命周期做比较好?
  • JAVA语言之Solr的工作原理以及如何管理索引库
  • 【爬虫软件】批量采集抖音主页已发布作品
  • 从零开始学习Linux(12)---进程间通信(信号量与信号)
  • 即插即用!高德西交的PriorDrive:统一的矢量先验地图编码,辅助无图自动驾驶
  • PHP环境搭建详细教程
  • 基于kolla-ansible在openEuler 22.03 SP4上部署OpenStack-2023.2
  • 二叉树和堆概念
  • C++ 科目二 智能指针 [weak_ptr] (解决shared_ptr的循环引用问题)
  • websocket消息推送修改
  • PostgreSQL的查看主从同步状态
  • 凸优化学习(3)——对偶方法、KKT条件、ADMM
  • 「C++系列」文件和流
  • 医学数据分析实训 项目四回归分析--预测帕金森病病情的严重程度