找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2882|回复: 8
打印 上一主题 下一主题
收起左侧

关于单片机主程序任务调度问题

[复制链接]
跳转到指定楼层
楼主
ID:232366 发表于 2021-2-19 10:36 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在写程序时通常做法是把一些应用程序驱动程序打包到一个子程序例如
void display_Drive()数码管底层驱动函数(数码管驱动扫描时间是1ms通过定时器控制标志位在主程序查询标志位)
void KEY_Scan()按键扫描函数
void Display_data()数码管数据分配函数
void Key_serve()按键服务函数
根据以上的函数通过多文件编程外部声名后在主程序中调用那么怎么样才能尽可能的减少主程序大循环里执行一次的时间把这个时间节省下来让cpu去处理别的事情  上面的子函数为例  哪些又需要实时扫描哪些又可以不用扫描这么快可以放后一点这种又应该怎么实现呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:884857 发表于 2021-2-19 11:15 | 只看该作者
比如外部按键的采样等信息,有实时查询(即一段时间后查询一次)和中断处理(即用中断的方式去采样),一般不采用查询的方式,那样耗费时间。显示部分一般注意一个鬼影问题就可以了,就是人眼在20ms以内的变化是看不出来的,看不出闪烁的问题即可。
至于具体怎么用,要结合你项目上的问题来决定,如果按键优先级很低,而且又需要中断处理多个任务,资源受限,也可改用查询的方式处理按键。
对MCU来说,顺序执行放在main函数中的函数尽量封装一下,比如init函数、main_loop函数等,具体函数实现不要在main中,这样看着更清爽

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:112099 发表于 2021-2-19 11:40 | 只看该作者
我其实没怎么看懂你的问题;不过我通常的写法是设置一个定时器计时20ms左右,然后在里面执行扫描按键,按键处理函数等;其他如果要1ms的可以再用一个定时器计时然后在主程序执行,不知道你懂不懂我的意思😂

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:451718 发表于 2021-2-19 11:58 | 只看该作者
很多种方法都可以实现啊,首先要弄清楚定时器的工作机制,你这个问题就迎刃而解了。给你一个思路,用定时器做个时间定标。每200ms定标自加,然后switch(定标)。自加到最大值时归零。  当然,为了保证按键响应的及时性,要给按键分配一个特殊的定标,每50ms检测一次,如果检测到按键响应,就优先执行按键服务。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:429003 发表于 2021-2-19 12:29 | 只看该作者
1.优化任务实现方式,尽可能的减少纯延迟的等待操作。
2.避免不了使用纯延迟,且有其它应急处理,可以设计一个专用延迟函数,根据事件类型,标识等,在延迟函数中处理一些应急数据。
3.没有较长延时的,能利用中断快速处理的,则不要麻烦主任务。
4.任务相对复杂,功能较多,可以考虑使用嵌入式操作系统。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:232366 发表于 2021-2-19 15:57 来自手机 | 只看该作者
robinsonlin 发表于 2021-2-19 11:58
很多种方法都可以实现啊,首先要弄清楚定时器的工作机制,你这个问题就迎刃而解了。给你一个思路,用定时器 ...

非常感谢非常感谢我明白你意思!我先去试试看去
回复

使用道具 举报

7#
ID:232366 发表于 2021-2-19 17:16 来自手机 | 只看该作者
xstong 发表于 2021-2-19 12:29
1.优化任务实现方式,尽可能的减少纯延迟的等待操作。
2.避免不了使用纯延迟,且有其它应急处理,可以设计 ...

感谢提出建议
回复

使用道具 举报

8#
ID:883031 发表于 2021-2-21 10:49 | 只看该作者
可根据任务的实时性要求不同来划分,尽量少用软件延时,定时中断的方式可采纳
回复

使用道具 举报

9#
ID:390416 发表于 2021-2-22 17:08 | 只看该作者
你的这个要求 就是《人人学会单片机》视频教程讲解的东西,框架式编程方式
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表