微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 存在串口轮询就进不了PM2?

存在串口轮询就进不了PM2?

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

实验中发现进不了PM2休眠状态,但将HAL_UART置为false,或者直接注释掉串口轮询函数HalUARTPoll(),就能进去了,所以要实现pm2休眠必须得屏蔽掉 串口么?还是我哪儿弄错了,望大神不吝赐教!

1)检查UART里面是否设置了osal_pwrmgr_device( PWRMGR_ALWAYS_ON );

2)只要没有定时事件,系统就会进去PM2,你检查下UART轮询间隔

谢谢了,osal_pwrmgr_device( PWRMGR_ALWAYS_ON )倒是没有,也没有启用任何定时器,

我追踪进去发现是HalUARTPollDMA函数中有这样一句:

if (dmaRdyDly == 0)
{
(void)osal_set_event(Hal_TaskID, HAL_PWRMGR_HOLD_EVENT);
}

这样导致pwrmgr_attribute.pwrmgr_task_state不为0,从而进不了休眠(osal_pwrmgr_powerconserve里有对这个变量的判断,若不为0则不进入休眠

那所以我只能不用HalUARTPoll这个函数,自己写串口的函数来实现串口传输?

有定时事件也能进PM2吧,有定时事件不能进PM3

一般来说,启用UART时,就禁止休眠;用完了,再启动休眠

不知道你们的使用场景是什么

楼上正解  低功耗模式时晶振是关闭的 串口不能正常工作

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

网站地图

Top