相信很多人在应用430的时候都喜欢吧进入低功耗和退出低功耗当做一个“标志位”来使用,譬如:
复制代码 - void main(void)
- {
- …………
- …………
- …………
- while(1)
- {
- LPMx;
- …………
- …………
- }
- }
- //*********************************************************************
- #pragma vector=xxxxxxx
- __interrupt void xx(void)
- {
- …………
- …………
- …………
- LPMx_EXIT;
- }
在进入低功耗和退出低功耗,好些人喜欢_BIS_SR(CPUOFF)或_BIS_SR(LPM0_bits);
这样是可以的。
但是在中断里退出低功耗用_BIC_SR(CPUOFF)或_BIC_SR(LPM0_bits);是不可以的。因为这个就相当于在中断里直接改SR,中断函数执行完毕后,SR出栈又进入了低功耗。
应该用LPMx_EXIT;或者_BIC_SR_IRQ(LPM0_bits);这个语句相当于汇编的bic.b #CPUOFF,(0)SP
之前用汇编很注意这个问题,可是用C的时候却疏忽了_BIC_SR(LPM0_bits);和LPMx_EXIT;或者_BIC_SR_IRQ(LPM0_bits);的区别。 |