
51多任务系统,可以运行
保存当前任务断点(PC和SP)的上下文 释放SP前缀,给下一个任务占用 设置当前任务时间为0,标志任务完成 找到下一个需要执行的任务,并启动切换流程
发布日期:2021-05-14 09:05:07
浏览次数:29
分类:精选文章
本文共 537 字,大约阅读时间需要 1 分钟。
用定时器2实现实时操作系统任务调度的方法是通过定时器2的中断来定期切换任务。根据系统需求,每个任务请求等待一定时间后,定时中断触发任务切换。
定时器2的初始化步骤需要配置RCAP2和T2CON寄存器,以达到10ms的定时周期。通过定时器中的断航位TF2,中断服务区段tm2_isr可以在定时中断发生时执行必要的任务切换逻辑。
在任务切换机制中,rtos_wait函数用于让当前任务等待指定的时间。每次等待完成后,函数将执行以下操作:
系统中使用Saved Context技术确保任务切换时能够正确保存和恢复上下文,避免任何状态丢失。定时中断处理tm2_isr通过执行TaskSw函数实现任务切换,确保任务能按时启动。
在多任务环境中,定时器2始终作为执行核心,所有任务都依赖于定时中断来切换。通过合理安排定时周期和任务切换逻辑,可以实现多个任务同时运行的硬实时系统需求。
该实现主要采用Keil4作为开发工具,RegX52库用于定时器控制。通过简洁的代码实现,系统能够在8k字节的闪存内运行多个任务,确保良好的性能和可靠性。
发表评论
最新留言
很好
[***.229.124.182]2025年05月03日 13时50分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
记录-基于springboot+vue.js实现的超大文件分片极速上传及流式下载
2019-03-11
JavaScript高级程序设计第四版学习记录-第九章代理与反射
2019-03-11
怎么解决Windows 10文件/文件夹正在使用无法删除
2019-03-11
F28335第九篇——通用IO
2019-03-11
STM32F429第十一篇之数据类型
2019-03-11
web项目开发记录
2019-03-11
matlab函数:sprintf详解
2019-03-11
matlab函数:fix 向0取整
2019-03-11
ORCAD创建元件库时,格点对不起怎么办
2019-03-11
Allegro中如何消除器件本身Pin间距报错
2019-03-11
AD中拖动器件,无法移动在一起如何解决
2019-03-11
linux--练习001-基础类型
2019-03-11
python内存地址和编译字节码
2019-03-11
Flask--简介
2019-03-11
Flask模板--过滤器与测试器
2019-03-11
16 python基础-恺撒密码
2019-03-11
06.1 python基础--结构控制
2019-03-11
Frame--Api框架
2019-03-11
Frame--WEB框架
2019-03-11
idea 在Debug 模式中运行语句中函数的方法
2019-03-11