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

MCU裸机任务调度架构

第1章 方式一(平均主义)

int main(int argc, char **argv){/* RTC 初始化 */bsp_RTC_Init(&rtc);/* 串口初始化 */uartInit(115200);/* LED初始化 */ledInit();while(1){// 任务1(获取传感器数据)// 任务2// 任务3}
}

1.1 平均主义的缺陷

        获取传感器数据可以600ms去读取一次,但是按照上面的架构,可能十几微妙就去获取一次传感器的数据,照成CPU的浪费;

第2章 方式二(基于时基)

不同的时间点执行不同的任务

 2.1 时基机制

uint8_t flag_1ms = 0;		// 每来1ms, 该标志位被置位为1;
uint8_t cnt_1ms = 0;		// 每来1ms, 该毫秒计数值加1;uint8_t flag_10ms = 0;		// 10ms时间到, 该标志位被置位为1;
uint8_t cnt_10ms = 0;		// 10ms时间到, 该毫秒计数值加1;uint8_t flag_100ms = 0;		// 100ms时间到, 该标志位被置位为1;
uint8_t cnt_100ms = 0;		// 100ms时间到, 该毫秒计数值加1;uint8_t flag_1s = 0;		// 1000ms时间到, 该标志位被置位为1;
uint8_t cnt_1s = 0;			// 1000ms时间到, 该毫秒计数值加1;int main(int argc, char **argv){while(1){// 1ms时间到达if(flag_1ms == 1){flag_1ms = 0;cnt_1ms++;// 累加到10ms后if(cnt_1ms >= 10){cnt_1ms = 0;flag_10ms = 1;}// TODO: 1ms到后需要执行的任务}// 10ms时间到达if(flag_10ms == 1){flag_10ms = 0;cnt_10ms++;// 累加到100ms后if(cnt_10ms >= 10){cnt_10ms = 0;flag_100ms = 1;}// TODO: 10ms到后需要执行的任务}// 100ms时间到达if(flag_100ms == 1){flag_100ms = 0;cnt_100ms++;// 累加到1000ms后if(cnt_100ms >= 10){cnt_100ms = 0;flag_1s = 1;}// TODO: 100ms到后需要执行的任务}// 1s时间到达if(flag_1s == 1){flag_1s = 0;cnt_1s++;// TODO: 1s到后需要执行的任务}}
}

 2.1 时基机制的缺陷

主循环内部出现很多if判断;

http://www.lryc.cn/news/473062.html

相关文章:

  • 【Web前端】JavaScript 对象原型与继承机制
  • 【华为HCIP实战课程二十六】中间到中间系统协议IS-IS配置默认路由及IS-IS数据库,网络工程师
  • mysql上课总结(2)(DCL的所有操作总结、命令行快速启动/关闭mysql服务)
  • 法律智能助手:开源NLP系统助力法律文件高效审查与检索
  • 如何使用AdsPower指纹浏览器克服爬虫技术限制,安全高效进行爬虫!
  • 四、虚拟化配置寄存器(HCR_EL2)
  • 我要成为算法高手-滑动窗口篇
  • jenkins搭建及流水线配置
  • Vue v-on
  • 快速生成高质量提示词,Image to Prompt 更高效
  • SELS-SSL/TLS
  • 算法:排序
  • MyBatis-Plus 更新对象时如何将字段值更新为 null
  • Unreal5从入门到精通之如何在VR中使用3DUI
  • ViSual studio如何安装 并使用GeographicLib
  • Java程序设计:spring boot(11)——分布式缓存 Ehcache 整合
  • 豆包,攻克数字是个什么工具?《GKData-挖掘数据的无限可能》(数据爬虫采集工具)
  • 说一说QWidget
  • Web3.0技术入门
  • spygalss cdc 检测的bug(二)
  • 集合论(ZFC)之 选择公理(Axiom of Choice)注解
  • JS:字符串操作
  • .NET 一款二进制文件转换Shellcode的工具
  • 【CSS】——基础入门常见操作
  • LuaJIT源码分析(五)词法分析
  • 005 匿名信
  • 聊聊Web3D 发展趋势
  • 【数据结构与算法】LeetCode: 贪心算法
  • Date 日期类的实现(c++)
  • 智能家居10G雷达感应开关模块,飞睿智能uA级别低功耗、超高灵敏度,瞬间响应快