程序在什么时候唤醒中断?

[复制链接]
1233|37
手机看帖
扫描二维码
随时随地手机跟帖
huangchui|  楼主 | 2018-11-9 10:10 | 显示全部楼层 |阅读模式
我看的一本书里面,低功耗是这么做的:
main()
{
     ...
     ...
     for(;;)
     {
          _BIS_SR(LPM3_bits);
          _nop();
      }
}

#pragma vector=PORT1_VECTOR

__interrupt void getKeyValue(void)

{
      P2OUT^=0x01;
}

可以看到,在主程序中,有一个for循环,里面基本上没什么操作。就是进入到低功耗模式。按照我的理解,进入到低功耗模式后,CPU便停在那个地方等待中断,当有中断的时候,进入中断。
我不太明白的是:程序在什么时候唤醒中断?

相关帖子

heweibig| | 2018-11-9 10:13 | 显示全部楼层
是不是还要有专门的唤醒的函数?

使用特权

评论回复
zhaoxqi| | 2018-11-9 10:17 | 显示全部楼层
中断后自动便把CPU唤醒了?

使用特权

评论回复
huangchui|  楼主 | 2018-11-9 10:20 | 显示全部楼层
我的理解是,中断发生后,便自动把CPU唤醒。在我以上的程序中,进入中断后对P2.0取反,然后退出中断,回到主程序,但是因为主程序中是一个无限循环for,因此这时候又会再次进入低功耗模式。

使用特权

评论回复
huangchui|  楼主 | 2018-11-9 10:23 | 显示全部楼层
还有一个不太明白的是:既然CPU碰到LPM4这样的句子就会停止CPU的话,如果在中断服务函数里写上那个句子,会不会使得CPU始终停留在那个中断服务函数里?

使用特权

评论回复
zhanghqi| | 2018-11-9 10:25 | 显示全部楼层
中断信号应该就是唤醒信号吧

使用特权

评论回复
wyjie| | 2018-11-9 10:28 | 显示全部楼层
再说也没有人会在中断程序里面写上睡眠指令的!

使用特权

评论回复
huangchui|  楼主 | 2018-11-9 10:31 | 显示全部楼层

怎么验证一下呢

使用特权

评论回复
jlyuan| | 2018-11-9 10:34 | 显示全部楼层
你可以通过这个测试一下,想法是否正确的!
{
      P2OUT^=0x01;
     _BIS_SR(LPM3_bits);
          _nop();
P2OUT^=0x01;


}

使用特权

评论回复
wuhany| | 2018-11-9 10:38 | 显示全部楼层
中断发生后,应该自动把CPU唤醒的吧

使用特权

评论回复
huangchui|  楼主 | 2018-11-9 10:38 | 显示全部楼层

示波器地线没夹好 也会这样

使用特权

评论回复
huangchui|  楼主 | 2018-11-9 10:41 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
vivilzb1985| | 2018-11-10 13:38 | 显示全部楼层
这个中断的处理还是很关键的

使用特权

评论回复
smilingangel| | 2018-11-10 17:48 | 显示全部楼层
程序被唤醒的主要是中断的

使用特权

评论回复
comeon201208| | 2018-11-10 19:21 | 显示全部楼层
这个要合理的配置系统的低功耗模式的

使用特权

评论回复
firstblood| | 2018-11-10 19:35 | 显示全部楼层
中断唤醒低功耗模式的呢

使用特权

评论回复
baimiaocun2015| | 2018-11-10 21:49 | 显示全部楼层
这个就是在有硬件的按键产生的中断的

使用特权

评论回复
tongbu2015| | 2018-11-11 11:56 | 显示全部楼层
这个任何一个有效的应用都能拉起中断才行的

使用特权

评论回复
51xlf| | 2018-11-12 22:21 | 显示全部楼层
任一中断或事件都能唤醒

使用特权

评论回复
i1mcu| | 2018-11-12 22:22 | 显示全部楼层
PORT1_VECTOR这个中断的时候。

使用特权

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

本版积分规则

918

主题

12323

帖子

4

粉丝