首页 > 其他分享 >基于STM32HAL库的FreeRTOS学习(2)

基于STM32HAL库的FreeRTOS学习(2)

时间:2024-04-02 10:58:20浏览次数:23  
标签:Task1 基于 函数 FreeRTOS STM32HAL 恢复 vTaskSuspend 任务

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

上一篇文章我们介绍了FreeRTOS的基础创建任务函数,这篇我们来介绍FreeRTOS的任务挂起与恢复函数。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是任务挂起与恢复?

在了解任务恢复之前,我们要先知道FreeRTOS的任务有几种状态
在这里插入图片描述
上图就是FreeRTOS的几种状态

状态概念
就绪态就绪态是指FreeRTOS的任务在没运行之前的状态,可以运行,等待FreeRTOS的调度
运行态当前任务正在被CPU调度执行
挂起态退出调度系统,调度器不可见,只能使用vTaskSuspend()挂起和vTaskResume()唤醒后进入就绪态
阻塞态等待某个事件的到来,定时或者同步

其中我们任务被vTaskSuspend挂起,就会放到挂起态,来等待vTaskResume()唤醒

二、使用步骤

1.FreeRTOSconfig.H

我们在调用挂起函数和恢复函数时,我们要检查我们FreeRTOSconfig.H文件里的
在这里插入图片描述


2.vTaskSuspend()任务挂起

	void vTaskSuspend( TaskHandle_t xTaskToSuspend )

这个函数的参数只有一个就是要挂起任务的权柄

vTaskSuspend(Task1_Hander); // 挂起Task1

这个函数还是比较简单的

3.vTaskResume();任务恢复

任务恢复函数就是把挂起态的任务恢复到就绪态,来等待cpu的调度

	void vTaskResume( TaskHandle_t xTaskToResume )

这个任务参数也是要被恢复任务的权柄
代码实例:

void Task4(void)
{
  while (1)
  {
    if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == RESET)
    {
      vTaskSuspend(Task1_Hander); // 挂起Task1
      // vTaskDelete(Task1_Hander);//删除Task1
      // break;
    }
    else if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == RESET)
    {
      vTaskResume(Task1_Hander);//恢复Task1
    }
    vTaskDelay(10);
  }
}

这个代码就是我用按键来控制任务的挂起与恢复。

总结

在任务恢复以及挂起的函数,我们可以应用于,当前时间任务不被执行,但我们还不想删除这个任务,我们就需要用到任务挂起和恢复这两个函数,来保证我们程序高效且合理的运行。

标签:Task1,基于,函数,FreeRTOS,STM32HAL,恢复,vTaskSuspend,任务
From: https://blog.csdn.net/2203_75363194/article/details/137261264

相关文章

  • 基于springboot实现高校心理教育辅导系统项目【项目源码+论文说明】计算机毕业设计
    基于springboot实现高校心理教育辅导系统演示摘要随着Internet技术的发展,心理教育辅导系统应运而生,心理教育辅导系统为用户提供了一个更为便利的心理测试咨询平台。所以,为了充分满足高校学生心理教育辅导的需求,特开发了本高校心理教育辅导系统。本高校心理教育辅导系统的......
  • 0080-基于单片机的智能水杯仿真设计
    功能描述1、采用51单片机作为主控芯片;2、采用1602液晶显示:当前时间、喝水定时、水温、水量(水余量/喝水量);4、采用DS1302时钟芯片;5、采用PCF8591作为水量检测ADC;6、能够自动计算单次喝水量;7、采用18B20传感器检测水温;8、到喝水定时的时间,声光报警提醒;9、可通过按键随时......
  • 基于springboot实现学生读书笔记共享平台系统项目【项目源码+论文说明】
    基于springboot实现学生读书笔记共享平台系统演示摘要本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述读书笔记共享平台的当前背景以及系统开发......
  • 基于springboot实现校园周边美食探索及分享平台系统项目【项目源码+论文说明】
    基于springboot实现园周边美食探索及分享平台系统演示摘要美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起,互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域,传统的美食业进而也面临着巨......
  • 基于jsp+Spring boot+mybatis的图书管理系统设计和实现
    基于jsp+Springboot+mybatis的图书管理系统设计和实现博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域作者主页央顺技术团队Java毕设项目精品实战案例《1000套》欢迎点赞收藏⭐留言文末获取源码联系方式......
  • 【Easy云盘 | 第三篇】登录注册模块上篇(获取验证码、发送邮箱验证码、登录、注册、重
    前言该Easy云盘非原创,原作者为B站程序员老罗本人不分享本项目源码,只记录项目日记,学习项目技术思路,支持项目付费B站项目学习链接:Springboot项目实战easypan仿百度网盘计算机毕业设计简历项目项目经验(后端)该项目难点:上传文件(大文件的分片与合并、视频文件的分片)、删......
  • 基于 STM32U5 片内温度传感器正确测算温度
    1.引言STM32在内部都带有一个温度传感器,STM32U5也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好的,可以防止芯片过温运行。2.问题2.1.问题详情某客户在使用STM32U575ZIT6Q时,使用ADC4对内部温度传......
  • 【图像分割】基于平方Hellinger距离和局部相关特征的自适应活动轮廓非均匀图像分割附m
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 基于Linux系统的Llama2模型部署与运行
    一、安装Linux系统(Ubuntu20.04)略。二、安装Nvidia-docker参考:nvidia-docker安装三、环境配置3.1拉取镜像在终端通过docker拉取一个Python版本为3.10的镜像。sudodockerpullpython:3.103.2在容器中的操作1、运行容器sudodockerrunit--name容器名python:3.......
  • 【数学建模】基于matlab模拟单摆运动
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......