This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好~(公司项目,卡在低功耗这里两周了)
我用lpm_haltwake例程做低功耗时,加了 FLASH_setPowerMode(myFlash,FLASH_PowerMode_PumpAndBankSleep); 电流确实降到了3mA,但是唤醒的时候,程序一直卡在IDLE这里出不来,请问一下这是什么问题?
#pragma CODE_SECTION(SetLowPower, "ramfuncs"); void SetLowPower(void) { FLASH_setActiveWaitCount(myFlash,10000); //RunInRam(); if ( PLL_getClkStatus(myPll) != PLL_PLLSTS_MCLKSTS_BITS) { // // LPM mode = Standby // PWR_setLowPowerMode(myPwr, PWR_LowPowerMode_Halt); //PWR_setLowPowerMode(myPwr, PWR_LowPowerMode_Idle); } FLASH_setPowerMode(myFlash,FLASH_PowerMode_PumpAndBankSleep); //如果不加FLASH睡眠,可以正常唤醒,但是电流有10mA IDLE; //加了FLASH睡眠模式,调式的时候发现程序一直卡在这里,无法向下执行 FLASH_setPowerMode(myFlash,FLASH_PowerMode_PumpAndBankStandby); //func1(); }
你好,TMS320F28027这款芯片(补充一下问题,貌似使用lpm_haltwake这个例程,在IDLE之前调用FLASH_setPowerMode都会程序卡在IDLE这里,是不是调用这个API还需要配置什么呢?
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize); FLASH_setup(myFlash);
这个是有的
)
您可以尝试修改该函数,在return之前加上IDLE命令。
IDLE命令不能在该函数之外,否则它就会一直 re-enable Flash
void FLASH_setPowerMode(FLASH_Handle flashHandle, const FLASH_PowerMode_e mode) { FLASH_Obj *flash = (FLASH_Obj *)flashHandle; ENABLE_PROTECTED_REGISTER_WRITE_MODE; // clear the bits flash->FPWR &= (~FLASH_FPWR_PWR_BITS); // set the bits flash->FPWR |= mode; DISABLE_PROTECTED_REGISTER_WRITE_MODE;
//please add IDLE command return; } // end of FLASH_setPowerMode() function