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

52Hz——FreeRTOS学习笔记——调度器的挂起与恢复

主要api

vTaskSuspendAll

xTaskResumeAll

总结

挂起调度器,上下文切换就不在执行,这样一来也能保证当前任务的原子性,也就是不被其他任务打断

案例

#include "MyTask.h"typedef enum
{TASK_PRIORITY_0,TASK_PRIORITY_1,TASK_PRIORITY_2,TASK_PRIORITY_3,TASK_PRIORITY_4
} Task_Priority_t;void Increament_Task(void *pvParameters);
TaskHandle_t Increament_task_handle;
#define Increament_TASK_NAME "Increament_Task"
#define Increament_TASK_STACK_DEPTH 128void Decreament_Task(void *pvParameters);
TaskHandle_t Decreament_task_handle;
#define Decreament_TASK_NAME "Decreament_Task"
#define Decreament_TASK_STACK_DEPTH 128void Print_Task(void *pvParameters);
TaskHandle_t Print_task_handle;
#define Print_TASK_NAME "Print_Task"
#define Print_TASK_STACK_DEPTH 128int16_t count = 0;void MyTask_Start_Work(void)
{// 1. 创建任务xTaskCreate(Increament_Task, Increament_TASK_NAME, Increament_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &Increament_task_handle);xTaskCreate(Decreament_Task, Decreament_TASK_NAME, Decreament_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &Decreament_task_handle);xTaskCreate(Print_Task, Print_TASK_NAME, Print_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &Print_task_handle);// 2. 开启调度vTaskStartScheduler();
}void Increament_Task(void *pvParameters)
{taskENTER_CRITICAL();for (uint16_t i = 0; i < 10000; i++){count++; // count = count + 1}taskEXIT_CRITICAL();vTaskDelete(NULL);
}void Decreament_Task(void *pvParameters)
{for (uint16_t i = 0; i < 10000; i++){vTaskSuspendAll();count--; // count = count - 1xTaskResumeAll();}vTaskDelete(NULL);
}void Print_Task(void *pvParameters)
{while (1){printf("count = %d \n", count);vTaskDelay(100);}
}

http://www.dtcms.com/a/399406.html

相关文章:

  • 微信网站建设平台郑州全面恢复正常
  • 8.Spring Ai Alibaba招聘助手实战
  • 平凉网站建设平凉杭州电信网站备案
  • 从GitHub下载单个文件夹的完整指南
  • 第二课强登陆网站新型智库建设的意见OA网站建设分析
  • Dify本地化部署和应用
  • 公司网站怎么做才能有官网二字做外贸网站那个平台好
  • linux docker 数据迁移
  • 自动点击器助手 1.1.5 | 支持免root录制点击脚本,一键录制重复点击脚本
  • qwen2.5-vl多模态大模型详解
  • 如何做好一个网站深圳网站和app建设
  • Linux进程概念(1)
  • w32time 服务
  • 视频解析网站怎么做的wordpress阿里云卡死了
  • 审美积累,顶刊论文插图原理图、流程图
  • 网站开发上市公司做彩票网站犯法不
  • python+django/flask在线问诊系统 医院就诊 医生推荐系统
  • 【Qt】QButtonGroup、QToolButton、QStackedWidget的常用用法
  • QT:串口通信、串口发送与接收(2)
  • 【Unity 入门教程】一、前置工作
  • 北京网站建设公司空间续费北京建设工程施工司法解释
  • 需求收集不完整的常见原因有哪些
  • 论坛网站备案开发者选项在哪里打开vivo
  • 谈谈数组和链表的时间复杂度
  • ServletContex读取properties文件,中文乱码
  • todesk取消客户端开机自动启动后,开机仍然会启动客户端,怎么设置?
  • C++编程学习(第36天)
  • 如何快速处理电脑上常常遇到的各种小问题?
  • 卷积神经网络(CNN)的LeNet模型
  • 佛山网站外包什么是网站推广方案