stm32l431的bsp没有,我从bsp的432修改,需要替换.s HE HAL_MSP.C。 加入了rtt 的pm 和 drv lptim等,但是还是没完全弄明白。折腾了几个代码,以下测试ok。
以下导入到msh,可以进入停机状态,不是待机。停机可以任意中断唤醒,所以tick就唤醒了,这里需要注意。
void Sys_Enter_Standby(void)
{
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
// EXTI->PR=0X00000;
while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
SysTick->CTRL &= (~SysTick_CTRL_ENABLE_Msk);
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
SystemClock_Config();
// rt_hw_board_init();
// rt_pin_mode(LED_0_PIN,PIN_MODE_OUTPUT);
// rt_pin_mode(LED_1_PIN,PIN_MODE_OUTPUT);
}
然后在 pin管脚中断里打开tick使能
void test_irq()
{
rt_kprintf("irq 0
");
SysTick->CTRL |= (SysTick_CTRL_ENABLE_Msk);
}
原作者:e_donkey
|