微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 产生两个中断问题

产生两个中断问题

时间:10-02 整理:3721RD 点击:

在低功耗中使用串口通信,我CC2530的串口读脚设为中断脚。每次串口中断后使用

osal_pwrmgr_task_state(SampleApp_TaskID, PWRMGR_HOLD);//不允许进入低功耗

串口通信正常。不过再次进入低功耗输入串口命令调用

osal_pwrmgr_task_state(SampleApp_TaskID,PWRMGR_CONSERVE);//允许进入低功耗 

不能进入低功耗

问题是第二次输入串口命令的时候是先响应串口中断再响应外部中断。

 case KEY_CHANGE:
          SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
          break;
       case CMD_SERIAL_MSG: //由 串口收到数据后由 T MT_UART  
          SampleApp_SerialCMD((mtOSALSerialData_t *)MSGpkt);
         break;

先响应CMD_SERIAL_MSG,再响应KEY_CHANGE

所以不能进入低功耗。

我在串口响应函数SampleApp_SerialCMD((mtOSALSerialData_t *)MSGpkt);中设了一个标志位,让他不响应下一次的外部中断。功能可以正常工作。感觉还是没有从根本上解决问题

协议栈默认按键是通过轮询实现的,100ms轮询一次。需要改成外部中断方式

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top