如何用中断打断当前操作

[复制链接]
1747|17
 楼主| inboyg 发表于 2013-11-24 11:25 | 显示全部楼层 |阅读模式
我想用串口或者无线的中断打断我当前对GPIO口的操作,但我现在的程序等待中断的时候同时进入了低功耗模式,无法执行后续操作。我希望可以在不进入低功耗模式的情况下使用中断,求高手指点,谢谢!
dirtwillfly 发表于 2013-11-24 16:06 | 显示全部楼层
不进入低功耗就可以啊,和51的程序一样,用个while(1)
黄小俊 发表于 2013-11-24 16:22 | 显示全部楼层
i1mcu 发表于 2013-11-24 19:41 | 显示全部楼层
去掉低功耗的命令。
i1mcu 发表于 2013-11-24 19:42 | 显示全部楼层
while(1)等待循环就行的。
 楼主| inboyg 发表于 2013-11-25 16:35 | 显示全部楼层
dirtwillfly 发表于 2013-11-24 16:06
不进入低功耗就可以啊,和51的程序一样,用个while(1)

这个在串口上可以这样做,我今天也试过了,但cc430无线的中断好像不太一样,我之前试了好像不行,不知道版主有没有什么建议
dirtwillfly 发表于 2013-11-25 19:08 | 显示全部楼层
inboyg 发表于 2013-11-25 16:35
这个在串口上可以这样做,我今天也试过了,但cc430无线的中断好像不太一样,我之前试了好像不行,不知道 ...

一般是把进入低功耗的指令去掉,加上while(1);
这样就不会进入低功耗了
你能把你的程序发上来吗?
 楼主| inboyg 发表于 2013-11-25 19:53 | 显示全部楼层
dirtwillfly 发表于 2013-11-25 19:08
一般是把进入低功耗的指令去掉,加上while(1);
这样就不会进入低功耗了
你能把你的程序发上来吗? ...



这个附件就是那个接收的程序,是根据一个例程改的,把低功耗一去掉就不行。我现在根据这个例程把很多东西都优化了,并且根据我的实际需要加了很多功能,但这个低功耗就是没法去掉。请版主看一下吧,多谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
dirtwillfly 发表于 2013-11-26 09:01 | 显示全部楼层
看了你的RF_Toggle_LED_Demo文件,把进入和退出低功耗模式的代码去掉似乎就可以了。
看你开了看门狗,记得及时喂狗啊:)
dirtwillfly 发表于 2013-11-26 09:05 | 显示全部楼层
msp430进入低功耗模式后,当有中断唤醒,执行完中断服务程序,如果中断服务程序中没有退出低功耗模式的代码,msp430还会恢复成中断唤醒前的状态,也就是低功耗模式。
所以在main函数里,低功耗模式后面的语句是永远执行不到的。
 楼主| inboyg 发表于 2013-11-26 09:11 | 显示全部楼层
dirtwillfly 发表于 2013-11-26 09:05
msp430进入低功耗模式后,当有中断唤醒,执行完中断服务程序,如果中断服务程序中没有退出低功耗模式的代码 ...

后来我把看门狗关掉了,而且把进出低功耗去掉了,还是不行的,就这个程序。是不是跟无线的WOR有关呢?
dirtwillfly 发表于 2013-11-26 09:47 | 显示全部楼层
inboyg 发表于 2013-11-26 09:11
后来我把看门狗关掉了,而且把进出低功耗去掉了,还是不行的,就这个程序。是不是跟无线的WOR有关呢? ...

应该不是。你看看这个文档:http://shop.21ic.com/share_docdata/2011-05/CC430-Wake-On-Radio.pdf
 楼主| inboyg 发表于 2013-11-26 21:13 | 显示全部楼层
dirtwillfly 发表于 2013-11-26 09:47
应该不是。你看看这个文档:http://shop.21ic.com/share_docdata/2011-05/CC430-Wake-On-Radio.pdf ...

谢谢,我这几天再试试
 楼主| inboyg 发表于 2013-11-27 16:22 | 显示全部楼层
dirtwillfly 发表于 2013-11-26 09:47
应该不是。你看看这个文档:http://shop.21ic.com/share_docdata/2011-05/CC430-Wake-On-Radio.pdf ...

我在我的复杂程序下试过了,现在可以把低功耗去掉了,开启中断后我用了for(cccc=0;cccc<=50;)这么个for循环把那里卡住,cccc是全局变量,在中断服务程序里把cccc赋51,证明了是可以的,谢谢版主的帮忙
comeon201208 发表于 2013-11-27 18:58 | 显示全部楼层
这个跟你的单片机等cpu自身的功能是有关系的
comeon201208 发表于 2013-11-27 19:00 | 显示全部楼层
例如430单片机的话,设置的任一个中断发生的话都可以唤醒休眠状态的
comeon201208 发表于 2013-11-27 19:01 | 显示全部楼层
而像stm32单片机进入休眠个状态后,一般的如定时器/时钟的秒中断的都不可以唤醒休眠状态的
comeon201208 发表于 2013-11-27 19:02 | 显示全部楼层
职能是特定的中断可以唤醒的,还有啊,就是不论哪一个单片机的,都需要设定其各中断的响应优先级别的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部