打印

微秒中断的问题

[复制链接]
451|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Spikess|  楼主 | 2018-7-3 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经常见到Delay_us(x)的延时函数,用的无非是systick定时器或者TIMx定时器作微秒中断使计数器自增,并执行while循环直到计数器达到x,以此完成延时。

假如是36MHz的主频,一个时钟周期是1/36微秒。1微秒中断一次,假如中断函数里写了几个语句翻译成汇编之后超过了36个时钟周期,那这样功能就不正常了吧。

即使中断函数里,很简洁,就几个时钟周期,可以让定时器跑起来。但是,不感觉这个时候CPU负担太重了吗?1微秒中断一次,让后执行零点几微秒,几乎CPU一直在跑吧。这样遇到其他中断任务呢?是不执行?还是插入?如果其他中断优先级高,插进来,执行了几十微秒的任务,那那个定时任务岂不是耽误了几十微秒。

像做单总线通讯时,需要自己控制时序,就要有这个微秒的延时函数。这样通讯的时候CPU就被占光了吧,也不能让其他中断插进来,否则就通讯出错啦。假如我外面还有一个系统时钟,每1ms定时中断一次,用来记录运行了多少ms的,或者判断超时的。要么是时钟计时弄坏了通讯,要么通讯弄得时钟不准~

求大侠高手前辈们指点,这种微妙级的中断该怎么使用。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

417

主题

421

帖子

0

粉丝