2026-03-20 21:16:58 +08:00
|
|
|
|
#include "../main/SystemInclude.h"
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief ִ<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>ģʽ
|
|
|
|
|
|
* @param mode: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡֵ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - PWR_MODE_SLEEP: ˯<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ֹͣ<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>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>LDO<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - PWR_MODE_DEEP_SLEEP_2: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>LDO<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - PWR_MODE_SNOOZE: ADCС˯ģʽ<EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* - PWR_MODE_SHUTDOWN: <EFBFBD>ض<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磩
|
|
|
|
|
|
* @note <EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD> LHL_PWR_SetPowerMode <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Դģʽ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* Ȼ<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> WFI ָ<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> ExitLowPowerModeRecoverySysState() <EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example EnterLowPowerModeWFI(PWR_MODE_DEEP_SLEEP_2);
|
|
|
|
|
|
**/
|
2026-03-20 21:19:04 +08:00
|
|
|
|
void EnterLowPowerModeWFI(PWR_POWERMODE_t mode)
|
|
|
|
|
|
{
|
|
|
|
|
|
delay_ms(800);
|
|
|
|
|
|
LHL_PWR_SetPowerMode(mode);
|
2026-03-20 21:19:53 +08:00
|
|
|
|
LHL_PWR_EnterSleep();/*<2A>Դ<EFBFBD> Restore Clocks */
|
|
|
|
|
|
// <20><><EFBFBD>Ѻ<EFBFBD><D1BA>Ӵ˴<D3B4><CBB4><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Զ<EFBFBD><D4B6>ָ<EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD> ֪ͨ<CDA8><D6AA>ģ<EFBFBD><C4A3><EFBFBD>ѻ<EFBFBD><D1BB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
ExitLowPowerModeRecoverySysState();
|
|
|
|
|
|
|
2026-03-20 21:16:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*=============================================================================*/
|
|
|
|
|
|
|
|
|
|
|
|
__LPM_STA_TypeDef lpmState;
|
|
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD>ж<EFBFBD> lpmState.mcuModeSleeping <EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPIO0.1 Ϊ<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><EFBFBD>
|
|
|
|
|
|
* SetupLowPowertoWakeupByHandwareTrigger() <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><EFBFBD><EFBFBD> lpmState.lpm_mode ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EnterLowPowerModeWFI<EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD> WFI <EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @example lpmState.lpm_mode = PWR_MODE_DEEP_SLEEP_2;
|
|
|
|
|
|
* lpmState.mcuModeSleeping = 1;
|
|
|
|
|
|
* LowPowerModeProcess();
|
|
|
|
|
|
**/
|
2026-03-20 21:19:04 +08:00
|
|
|
|
void LowPowerModeProcess(void)
|
|
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
if (lpmState.mcuModeSleeping==0) return ; //<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD>
|
|
|
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD>
|
2026-03-20 21:19:53 +08:00
|
|
|
|
lpmState.mcuModeSleeping = 0 ;
|
|
|
|
|
|
/*ʹ<><CAB9> UART Rx<52><78><EFBFBD><EFBFBD> <20>ⲿ<EFBFBD>жϻ<D0B6><CFBB><EFBFBD>---------------------------------------------- */
|
|
|
|
|
|
GPIO_EXTI_Init(GPIO0,GPIO_PIN_1,EXTI_LINE_1,EXTI0_1_IRQn);//Ĭ<>Ͻ<EFBFBD>GPIO0.1<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
|
|
|
|
|
|
|
SetupLowPowertoWakeupByHandwareTrigger();//˯<><CBAF>ǰ<EFBFBD><C7B0><EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ѣ<EFBFBD>ʹ<EFBFBD><CAB9>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>жϿ<D0B6><CFBF>Դ<EFBFBD><D4B4><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
switch(lpmState.lpm_mode)
|
|
|
|
|
|
{
|
|
|
|
|
|
case PWR_MODE_DEEP_SLEEP_2 : EnterLowPowerModeWFI(PWR_MODE_DEEP_SLEEP_2); break ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
|
|
|
|
|
case PWR_MODE_SNOOZE : EnterLowPowerModeWFI(PWR_MODE_SNOOZE); break ; //ADCС˯ģʽ
|
|
|
|
|
|
case PWR_MODE_DEEP_SLEEP_1 : EnterLowPowerModeWFI(PWR_MODE_DEEP_SLEEP_1); break ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
|
|
|
|
|
case PWR_MODE_SLEEP : EnterLowPowerModeWFI(PWR_MODE_SLEEP); break ; //<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|
|
|
|
|
case PWR_MODE_SHUTDOWN : EnterLowPowerModeWFI(PWR_MODE_SHUTDOWN); break ; //<2F>ض<EFBFBD>ģʽ
|
|
|
|
|
|
default : EnterLowPowerModeWFI(PWR_MODE_SLEEP); break ;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// /**------------------------------------------------------------------------
|
|
|
|
|
|
// * @brief <20><><EFBFBD><EFBFBD>SNOOZEģʽDMA<4D><41><EFBFBD><EFBFBD>Դ
|
|
|
|
|
|
// * @param ch: 0=ʹ<><CAB9>ADC0<43><30>DMAͨ<41><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1=ʹ<><CAB9>ADC1<43><31>DMAͨ<41><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// * @note <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SNOOZE_SRC_EXIT [2]
|
|
|
|
|
|
// * 0: ʹ<>ð<EFBFBD><C3B0><EFBFBD>ADC0<43><30>DMAͨ<41><CDA8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>core<72><65>Դ
|
|
|
|
|
|
// * 1: ʹ<>ð<EFBFBD><C3B0><EFBFBD>ADC1<43><31>DMAͨ<41><CDA8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>core<72><65>Դ
|
|
|
|
|
|
//**/
|
|
|
|
|
|
//void ADC_Set_SNOOZE_DMA_Wakeup(ADC_ID_t ADCx )
|
|
|
|
|
|
//{
|
|
|
|
|
|
// uint32_t reg_val = pADC->DMA_MODE;
|
|
|
|
|
|
//
|
|
|
|
|
|
//// LHL_ADC_DMACmd(ADCx, ENABLE); //dma_adc <20><>ʼ<EFBFBD><CABC><EFBFBD>Ѿ<EFBFBD>ʹ<EFBFBD><CAB9>
|
|
|
|
|
|
// reg_val &= ~ADC_SUBSYS_USER_DMA_MODE_SNOOZE_EXIT_SRC_Msk; // <20><>bit2
|
|
|
|
|
|
// reg_val |= (((uint32_t)ADCx - 1)<< ADC_SUBSYS_USER_DMA_MODE_SNOOZE_EXIT_SRC_Pos);
|
|
|
|
|
|
// pADC->DMA_MODE = reg_val;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>廽<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* Ĭ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>
|
|
|
|
|
|
* - LPTIM2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD> ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> XLINK<EFBFBD><EFBFBD>
|
|
|
|
|
|
* - RTC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XLINK <EFBFBD><EFBFBD> ADC <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* - ADC <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ΪӲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
* - ʹ<EFBFBD><EFBFBD> ADC <EFBFBD><EFBFBD> EXTI <EFBFBD>ߣ<EFBFBD>EXTI_LINE_12<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
|
* @example <EFBFBD>ޣ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
**/
|
|
|
|
|
|
__weak void SetupLowPowertoWakeupByHandwareTrigger(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
/*ADC<44><43><EFBFBD><EFBFBD>-----SNOOZEģʽ<C4A3><CABD>Ч================================================*/
|
|
|
|
|
|
|
|
|
|
|
|
/* 1. LPTIM <20><><EFBFBD><EFBFBD> */
|
|
|
|
|
|
StartLPTimer2(32768); //<2F><><EFBFBD><EFBFBD>LPTimer<65><72><EFBFBD><EFBFBD>adcת<63><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 4s 16384 65535 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʱ<D2AA>䣬<EFBFBD>Ƚ<EFBFBD><C8BD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״δ<D7B4><CEB4><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|
|
|
|
|
// /* 2. <20><><EFBFBD><EFBFBD>XLINK<4E><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LPTIM<49><4D>ADCӲ<43><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
// XLINK_LPTIM_To_ADC_Trigger(LPTIM2, ADC_0);
|
|
|
|
|
|
// /* 3. <20><><EFBFBD><EFBFBD> LPTIM2<4D><32>ΪADCӲ<43><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ*/
|
|
|
|
|
|
// MODIFY_REG(pPWR->CR, PWR_CR_ADC_MSYS_TSEL_Msk, (3U << PWR_CR_ADC_MSYS_TSEL_Pos));
|
2026-03-20 21:16:58 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/* 1. RTC<54><43><EFBFBD><EFBFBD> */
|
|
|
|
|
|
StartRTC_AlarmAfterSeconds(1);//<2F><><EFBFBD><EFBFBD> N <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
LHL_RTC_ITConfig(RTC_IT_ALRIE, DISABLE);//<2F><><EFBFBD><EFBFBD>RTC<54><43><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><>ʹ<EFBFBD>ܻ<EFBFBD><DCBB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD> EXTI_LINE_9 <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
|
|
|
|
|
// 2. <20><><EFBFBD><EFBFBD> RTC ALARM<52><4D>ΪADCӲ<43><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
|
MODIFY_REG(pPWR->CR, PWR_CR_ADC_MSYS_TSEL_Msk, (0U << PWR_CR_ADC_MSYS_TSEL_Pos));
|
|
|
|
|
|
/* 3. <20><><EFBFBD><EFBFBD>XLINK<4E><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTC ALARM<52><4D>ADCӲ<43><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
XLINK_RTC_ALARM_To_ADC_Trigger(ADC_0);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/* 4. ADC <20><><EFBFBD><EFBFBD> <20><>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA> */
|
|
|
|
|
|
ADC_REF_Init(REF_INTERNAL_2P5V, REF_INTERNAL_2P5V);
|
|
|
|
|
|
ADC_Init_For_LowerPower(ADC_0, ADC_SPS_5, GAIN32, ADC0_AIN0, ADC0_AIN1);
|
|
|
|
|
|
|
|
|
|
|
|
/* 5. <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Դ */
|
|
|
|
|
|
// LPTIM_EXTI_Init(LPTIM2);//<2F><>LPTimer2<72><32>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Դ EXTI_LINE_11
|
|
|
|
|
|
ADC_EXTI_Init();//<2F><>ADC<44><43>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Դ EXTI_LINE_12
|
|
|
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
/**------------------------------------------------------------------------
|
|
|
|
|
|
* @brief <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><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Զ<EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* Ĭ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
|
|
|
|
|
* - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXTI <EFBFBD>жϱ<EFBFBD>־λ
|
|
|
|
|
|
* - <EFBFBD>ָ<EFBFBD> UART <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>
|
|
|
|
|
|
* - <EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD> ADC ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD> ADC ֵ
|
|
|
|
|
|
* - Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD> SNOOZE ģʽ<EFBFBD><EFBFBD>lpmState <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
* @example <EFBFBD>ޣ<EFBFBD><EFBFBD><EFBFBD> EnterLowPowerModeWFI <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
**/
|
|
|
|
|
|
__weak void ExitLowPowerModeRecoverySysState(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
lpmState.mcuModeSleeping = 0 ;//<2F><><EFBFBD><EFBFBD>mcu<63><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>λ
|
|
|
|
|
|
|
|
|
|
|
|
static u16 wakeupcount = 0 ,wakeupsource;
|
|
|
|
|
|
wakeupcount++ ;
|
|
|
|
|
|
wakeupsource = pEXTI->PR ;//<2F>жϻ<D0B6><CFBB><EFBFBD>Դ<EFBFBD><D4B4>־ pEXTI->EMR //<2F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>־λ
|
|
|
|
|
|
pEXTI->PR = 0xFFFF;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>־λ
|
|
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
//1. UART----------------------------------------------------
|
|
|
|
|
|
NVIC_DisableIRQ(EXTI0_1_IRQn); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uart rx<72><78><EFBFBD>ⲿ<EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
MainUartInit(baudRateVaule[baudRate]);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûش<C3BB><D8B4>ڹ<EFBFBD><DAB9><EFBFBD>
|
|
|
|
|
|
StartDMAForRxdMainUartData();//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
|
|
|
|
|
|
// TEST_PIN_TOGGLE();
|
|
|
|
|
|
//2. ADC----------------------------------------------------
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD>ֵ<EFBFBD><D6B5>----
|
|
|
|
|
|
u16 adc_buffer = ADC_ReadData(ADC_0);//ֱ<>Ӷ<EFBFBD>ȡ<EFBFBD><C8A1>ʹ<EFBFBD><CAB9><EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
// if(adc_buffer > 42768 ) lpmState.mcuModeSleeping = 0 ;//<2F>˳<EFBFBD>˯<EFBFBD><CBAF>
|
|
|
|
|
|
lpmState.lpm_mode = PWR_MODE_SNOOZE ;
|
|
|
|
|
|
lpmState.mcuModeSleeping = 1 ;//Ĭ<><C4AC><EFBFBD>ٴ<EFBFBD>˯<EFBFBD><CBAF>
|
|
|
|
|
|
|
|
|
|
|
|
printf(" \n ---<2D><><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD> = %d ; <20><><EFBFBD><EFBFBD>Դ = %d <20><>ǰADCֵ = %d \n" ,wakeupcount , wakeupsource ,adc_buffer);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|