beary 发表于 2016-6-27 10:50:33

【伪代码】中断和轮询哪个反应快一些?

比如我要等一个管教是0,取名叫GPIOA_PIN1假设有一个变量是read_failing,在中断里写1,初始化为0

假设我开了中断,是下降沿激活
那么中断方式可以用
while(1)
{
if(read_falling)
{
      read_failing = 0;
       ........
}

}

轮询方式的话可以用这样的
while(1)
{
    while(!READ_GPIOA_PIN1);//这里就一直等待这个脚变成0
   .............................


}

不考虑代码的其他用途和其他代码,这两种方式哪种速度快一些,更好一些呢?





发表于 2016-6-27 14:12:14

要根据实际应用来做,如果只是简单的测试,可以这么做。
还要考虑其他的代码运行。不能在这里死等,还是用if()的方式比较好些。

moyanming2013 发表于 2016-6-27 11:24:28

你如果是管脚变化频率不高,那么肯定是中断方式。
如果是每次管脚变化跟随一堆的数据,是中断里面有轮询。

lzts 发表于 2016-6-27 12:50:24

你这样写反应快的肯定是轮询(你这就是查询)方式. 中断是有响应时间的(执行完当前指令后还要保护当前地址准备中断后返回). 查询不受中断影响的话反应是最快的(本次检测中改变,下次就能检测到).
页: [1]
查看完整版本: 【伪代码】中断和轮询哪个反应快一些?