Files
CHJ/user/MCU/lhl_lowpower.c

69 lines
2.0 KiB
C
Raw Normal View History

2026-03-20 21:16:58 +08:00
#include "../main/SystemInclude.h"
2026-03-20 21:19:04 +08:00
void EXTI_PWR_Wakeup_irq_callback(void)
2026-03-20 21:16:58 +08:00
{
2026-03-20 21:19:04 +08:00
mcuModeSleeping = 0 ;//<2F><><EFBFBD><EFBFBD>mcu<63><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>λ
//NVIC_DisableIRQ(EXTI4_7_IRQn);
//printf("deepsleep out");
2026-03-20 21:16:58 +08:00
}
2026-03-20 21:19:04 +08:00
static void SetupWakeupSources(PWR_WakeupWay_TypeDef wakeupWay)
2026-03-20 21:16:58 +08:00
{
2026-03-20 21:19:04 +08:00
if(wakeupWay == PWR_Wakeup_None) return ;
if(wakeupWay & PWR_Wakeup_RTC)
{
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
}
if(wakeupWay & PWR_Wakeup_EXTI)
{
GPIO_EXTI_Init(GPIO1,GPIO_PIN_7,EXTI_LINE_7,EXTI4_7_IRQn);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ⲿexti<74>жϣ<D0B6><CFA3>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
Exti_register_irq_callback(EXTI_LINE_7,EXTI_PWR_Wakeup_irq_callback);
}
if(wakeupWay & PWR_Wakeup_LPTIM1)
{
}
if(wakeupWay & PWR_Wakeup_LPTIM2)
2026-03-20 21:16:58 +08:00
{
2026-03-20 21:19:04 +08:00
}
if(wakeupWay & PWR_Wakeup_IWDG)
{
2026-03-20 21:16:58 +08:00
}
}
2026-03-20 21:19:04 +08:00
/**
* ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˺<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* PWR_POWERMODE_t: 5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* PWR_MODE_SLEEP ˯<EFBFBD><EFBFBD>ģʽ(Cortex"-M0+<2B>ں<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Cortex"-M0+<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NVIC<EFBFBD><EFBFBD>ϵͳʱ<EFBFBD><EFBFBD>(SysTick)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* PWR_MODE_DEEP_SLEEP_1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1(<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32K LSI <EFBFBD><EFBFBD> LSE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʱ<EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> low power LDO)
* PWR_MODE_DEEP_SLEEP_2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2(<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32K LSI <EFBFBD><EFBFBD> LSE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʱ<EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> low power LDO)
* PWR_MODE_SNOOZE ADCС˯ģʽ(ADC ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* PWR_MODE_SHUTDOWN <EFBFBD>ض<EFBFBD>ģʽ(HPLDO <EFBFBD><EFBFBD> LPLDO <EFBFBD><EFBFBD><EFBFBD>رգ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
***/
void EnterLowPowerModeWFI(PWR_POWERMODE_t mode)
{
delay_ms(800);
// SetupWakeupSources(PWR_Wakeup_EXTI);// PWR_Wakeup_RTC|PWR_Wakeup_EXTI //ʹ<><CAB9><EFBFBD>ⲿ<EFBFBD>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ѣ<EFBFBD>ʹ<EFBFBD><CAB9>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>жϿ<D0B6><CFBF>Դ<EFBFBD><D4B4><EFBFBD>
LHL_PWR_SetPowerMode(mode);
LHL_PWR_EnterSleep();
2026-03-20 21:16:58 +08:00
}
2026-03-20 21:19:04 +08:00
volatile u32 mcuModeSleeping;
//PWR_POWERMODE_t LowPowerMode = PWR_MODE_DEEP_SLEEP_1 ;
void LowPowerModeProcess(void)
{
// if (mcuModeSleeping==0) return ;
//<2F><><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD>
mcuModeSleeping = 0 ;
// printf("deepsleep in");
EnterLowPowerModeWFI(PWR_MODE_DEEP_SLEEP_1);
// EnterLowPowerModeWFI(PWR_MODE_DEEP_SLEEP_2);
// EnterLowPowerModeWFI(PWR_MODE_SNOOZE);
// EnterLowPowerModeWFI(PWR_MODE_SHUTDOWN);
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
// EnterLowPowerModeWFI(LowPowerMode);
2026-03-20 21:16:58 +08:00
2026-03-20 21:19:04 +08:00
}