你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
beary 提问时间:2016-6-27 10:50 /
比如我要等一个管教是0,取名叫GPIOA_PIN1假设有一个变量是read_failing,在中断里写1,初始化为0

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

}

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


}

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





收藏 评论3 发布时间:2016-6-27 10:50

举报

3个回答
回答时间:2016-6-27 14:12:14
要根据实际应用来做,如果只是简单的测试,可以这么做。
还要考虑其他的代码运行。不能在这里死等,还是用if()的方式比较好些。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

moyanming2013 回答时间:2016-6-27 11:24:28
你如果是管脚变化频率不高,那么肯定是中断方式。
如果是每次管脚变化跟随一堆的数据,是中断里面有轮询。
lzts 回答时间:2016-6-27 12:50:24
你这样写反应快的肯定是轮询(你这就是查询)方式. 中断是有响应时间的(执行完当前指令后还要保护当前地址准备中断后返回). 查询不受中断影响的话反应是最快的(本次检测中改变,下次就能检测到).

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版