发布网友 发布时间:2022-04-22 05:03
共4个回答
热心网友 时间:2023-06-23 18:14
设计主要思想:
单片机不可能同时执行多个函数,但是可以先后执行程序给他安排的每一件事,假如每个事件间隔时间非常短,ms、us级别,或者间隔时间更短,那么连续一段时间内执行的事件,看起来就是同时执行的。每一个事件可以看做一个或多个函数,也就意味着只要程序安排的合理,很多函数看起来是同时运行的;
模型举例:假如要做几件事,烧开水,洗衣服,打游戏;
A:烧开水,等好了之后,洗衣服,洗完之后,打游戏;
B:烧开水,洗衣服时监听水壶的声音,两件事执行完,打游戏;
C:选择一个烧水开了会停止工作的电水壶,不要等了,用洗衣机洗衣服,打游戏;
耗时:A最长,其次B,C最短。
不同的工具占用人时间精力也是不同的,同理单片机周围外设选择不同,也会影响CPU占用时间;
实例:
要求:假如单片机要“同时”执行,数码管显示、蜂鸣器、流水灯移动;
具体实施A:设置一个定时器,假如每隔1ms进入中断,设置几个全局变量x、y、z,定时器中断里自加,在程序主循环里查询全局变量的数值,当x大于500后,清零x,让流水灯移位,当y大于,1000时清零y,数码管加1,当z大于2时,清零z,反转控制蜂鸣器的IO电平,以此类推其他事情也是如此。
具体实施B:设置单片机本身PWM驱动蜂鸣器,设置一个定时器,假如每隔1ms进入中断,设置几个全局变量x、y、z,定时器中断里自加,在程序主循环里查询全局变量的数值,当x大于500后,清零x,让流水灯移位,当y大于,1000时清零y,数码管加1,以此类推其他事情也是如此。
使用内部PWM资源可以更省CPU时间!
总结:
如果外设资源不足只能算法来补充;
以上方法适合资源较少的单片机,若是单片机资源够多(RAM>4K,Flas>8K),很多实时操作系统可以选择:ucos,FreeRTOS等,这些实时操作系统可以方便管理事件的切换。
热心网友 时间:2023-06-23 18:14
多个函数功能同时执行是不可能的。由于单片机本身的条件*。对于你的问题可以采用如下方法解决。热心网友 时间:2023-06-23 18:15
单片机多个函数功能同时执行是不可能的。热心网友 时间:2023-06-23 18:15
简单点的可以在定时中断里执行每个各个任务。