【单片机】单片机裸机实现多任务调度

RTOS vs 裸机多任务调度

实时操作系统RTOS的优点不必多说了,但是对于一些简单的业务需求,移植一个操作系统显得非常麻烦,并且占用系统资源,此时就可以考虑利用SysTick裸机实现多任务调度。

单片机裸机实现多任务调度的优点有

1、代码量小
2、移植简单
3、程序架构清晰、模块化

示例代码

方法不止一种,原理都是借助定时器实现多个任务之间的轮转,示例代码如下:

#define TASK01_DELAY 70
#define TASK02_DELAY 1
#define TASK03_DELAY 200int main()
{/*系统时钟配置*/system_clock_config();/*嘀嗒时钟*/systick_init();u32 current_time = get_system_ms();u32 last_task01_time = get_system_ms();u32 last_task02_time = get_system_ms();u32 last_task03_time = get_system_ms();while (1){current_time = get_system_ms();if (current_time - last_task01_time >= TASK01_DELAY){// TODO Task01last_task01_time = current_time;Task01();}if (current_time - last_task02_time >= TASK02_DELAY){// TODO Task02last_task02_time = current_time;Task02();}if (current_time - last_task03_time >= TASK03_DELAY){// TODO Task03last_task03_time = current_time;Task03();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2虚拟列表,umy-ui封装

一、起因 1、需求: 由于业务需求在页面一次性展示较多数据,不低于上千,但是每条数据涉及样式较多,数据渲染过多就会导致页面卡顿 2、满足: 大量数据加载;表格功能:列显隐、列顺序调整、固定、筛…

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

3.2.1.0 发布!时间转换函数+BI 集成+视图正式上线!

自 3.0 版本发布以来,经过研发人员和社区用户的不断努力,TDengine 进行了大量更新,产品稳定性和易用性也在不断提升。近日,TDengine 3.2.1.0 成功发布,该版本带来了一些重大功能优化,这些优化将进一步提升 …

spark sql基于CBO的优化

前言 spark sql基于CBO的优化是建立在物理计划层面的,原理是计算出所有可能的物理执行计划,并挑选成代价最小的物理执行计划。对于执行计划可以去看我的另一篇博客RBO优化 CBO的话主要用来调整inner join所涉及表的顺序 使用CBO准备 搜集所需表和列的…

Leetcode每日一题学习训练——Python3版(从二叉搜索树到更大和树)

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录从二叉搜索树到更大和树理解题目代码思路参考代码 原题可以点击此 1038. 从二叉搜索树到更大和树 前去练习。 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST),请…

VUE2+THREE.JS 按照行动轨迹移动人物模型并相机视角跟随人物

按照行动轨迹移动人物模型并相机视角跟随人物 1. 初始化加载模型2. 开始移动模型3. 人物模型启动4. 暂停模型移动5. 重置模型位置6. 切换区域动画7. 摄像机追踪模型8. 移动模型位置9.动画执行 人物按照上一篇博客所设定的关键点位置,匀速移动 1. 初始化加载模型 //…

我的计算机专业之旅:激情、挑战与无尽可能性

标题:我的计算机专业之旅:激情、挑战与无尽可能性 引言: 回顾过去的三年,我深深感受到计算机专业给我带来的激情、挑战以及无尽的可能性。作为一名大三的计算机专业学生,我想分享一下当初选择这条专业之路的初衷和心…

短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)

1. 检查IP是否在黑名单中,如果是则终止访问。 2. 检查手机号是否在黑名单中,如果是则终止访问。 3. 对于同一个IP,限制访问次数,如果超过限制则终止访问。 4. 对于同一个手机号,限制访问次数,如果超过限制则…

〖大前端 - 基础入门三大核心之JS篇㊸〗- DOM事件对象的方法

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

高铁乘务员简历12篇

想要在高铁乘务员职位的求职中脱颖而出,顺利进入心仪的高铁乘务员岗位,以下是12篇专业的高铁乘务员个人简历案例,无论您是初入行业的新手还是有一定工作经验的乘务员参考这些简历,让您的求职之路更加顺畅。 高铁乘务员简历模板下…

3D Gaussian Splatting的使用

3D Gaussian Splatting的使用 1 下载与安装2 准备场景样本2.1 准备场景照片2.1.1 采集图片2.1.2 生成相机位姿 3 训练4 展示 1 下载与安装 今年SIGGRAPH最佳论文,学习了一下,果然厉害,具体论文原理就不说了,一搜都有,…

2023年12月5日历史上的今天大事件早读

1377年12月05日明朝第二位皇帝明惠帝朱允炆出生 1408年12月05日金帐汗国军队在亦敌忽率领下进抵莫斯科城下 1492年12月05日欧洲航海家哥伦布第一次踏上伊斯帕尼奥拉岛 1791年12月05日音乐神童莫扎特逝世 1847年12月05日广州黄竹岐人民抗英 1870年12月05日法国著名作家大仲…

第N个泰波那锲数

1.题目解析 动态规划算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 为了填写当前状态的时候,所需要的状态已经计算过了!!! 5.返回值 题目要求 状态表示 ------------------------------------------------------…

vant4 van-tabs和van-popup一起使用样式错误

问题现象:van-cell的宽度被撑出屏幕宽度 今天做一个tab切换页面,偶然发现这个问题,记录一下。 问题背景: 前提是已经定了框架vue3vant4 那么做tab页面首先是用到了van-tabs,然后很自然的给它加了animated属性&#xff…

Cannot read properties of null (reading ‘setAttribute‘)

做项目时候,总是报这个错,参考如下链接解决问题,在此记录下,防止忘记。 报错 Uncaught TypeError: Cannot read properties of null (reading ‘setAttribute‘)_三水木雨的博客-CSDN博客

【C/PTA —— 14.结构体1(课外实践)】

C/PTA —— 14.结构体1(课外实践) 一.函数题6-1 选队长6-2 按等级统计学生成绩6-3 学生成绩比高低6-4 综合成绩6-5 利用“选择排序算法“对结构体数组进行排序6-6 结构体的最值6-7 复数相乘运算 二.编程题7-5 一帮一7-6 考试座位号 一.函数题 6-1 选队长…

Git篇如何搭建自己的git仓库

搭建自己的Git仓库需要以下步骤: 安装Git:首先需要在你的计算机上安装Git。你可以从Git官方网站下载并安装适合你操作系统的版本。创建新的Git仓库:在命令行中输入以下命令来创建一个新的Git仓库: mkdir my_project cd my_proje…

51综合程序04-ADC0808与DAC0808的应用

文章目录 一、ADC0808调温报警器1. 简单介绍2. 电路连接图3. 源代码4. 实验效果 二、DAC0808直流电机调速器1. 简单介绍2. 电路连接图3. 源代码4. 实验效果 一、ADC0808调温报警器 1. 简单介绍 ADC0808 是一款 8 位模数转换器(Analog-to-Digital Converter&#x…

【教3妹学编程-算法题】到达首都的最少油耗

3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包” 2哥 :3妹,什么事呀这么开发。 3妹:2哥你看今天的天气多好啊,阳光明媚、万里无云、秋高气爽,适合秋游。 2哥&#x…

MybatisPlus中的使用Wrapper自定义SQL

一、条件构造器 条件构造器提供了一种更加简洁和直观的方式来构建复杂的查询条件。它提供了一组静态方法,用于构建各种类型的查询条件,包括等于、不等于、大于、小于、包含等。使用条件构造器可以避免手动拼接SQL语句的麻烦,提高代码的可读性…