微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 终端进入PM2的问题,我不知道成功没成功,LED3(在网状态指示灯)没有规律地闪烁

终端进入PM2的问题,我不知道成功没成功,LED3(在网状态指示灯)没有规律地闪烁

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

我之前用SensorDemo做的休眠实验,加上POWER_SAVING,但是没有改成按键中断,所以闪烁的非常快,现在用SampleApp工程,加上了POWER_SAVING和按键中断,但是LED3没有规律的闪烁,我不知道系统还在那里分配了任务阻止节点休眠。所以进行了仿真,在这个过程中我发现一个问题就是当程序运行到这里时:

if ((timeout > HAL_SLEEP_MS_TO_320US(PM_MIN_SLEEP_TIME)) ||
(timeout == 0))
#endif
{
halIntState_t ien0, ien1, ien2;

HAL_ASSERT(HAL_INTERRUPTS_ARE_ENABLED());
HAL_DISABLE_INTERRUPTS();直接从这里跳出去了,执行了

if (halSleepPconValue == 0)
{
/* An interrupt may have changed the sleep decision. Do not sleep at all. Turn on
* the interrupt, exit normally, and the next sleep will be allowed.
*/
HAL_ENABLE_INTERRUPTS();
}自此跳出halsleep()函数,第二次进入halsleep()的时候又从

else if (timeout > PM_MIN_IDLE_TIME)
{
/* Timeout is too close to enter power mode. Try idle mode. */
HAL_DISABLE_INTERRUPTS();

/* Interrupt will be enabled in halSleepEnterIdleMode(). */
halSleepEnterIdleMode(timeout);  跳出halsleep()函数,继续运行

void halSleepEnterIdleMode(uint32 timeout)
{
/* enable sleep timer interrupt */
if (timeout != 0)
{
if (timeout > HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ))
{
timeout = HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME );
}
/* set sleep timer */
halSleepSetTimer(timeout);

/* set up sleep timer interrupt */
HAL_SLEEP_TIMER_CLEAR_INT();
HAL_SLEEP_TIMER_ENABLE_INT();
}
HAL_SLEEP_PREP_IDLE_MODE();
HAL_ENABLE_INTERRUPTS();
HAL_SLEEP_SET_POWER_MODE();

为什么会是这样呢?这到底是进入到PW2了没有啊?而且单步运行的时候LED3就不闪。

有没有测过电流,看电流值可以确定是否有进PM2模式

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

网站地图

Top