halt(); 停机模式,功耗现在最低能降到1uA,但是外部中断不起作用了?请指教!
void GPIO_Configuration(void)
{
/* I/O口初始化;*/
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOD);
GPIO_DeInit(GPIOE);
/*控制 LED的信号管脚*/
GPIO_Init(GPIOB,GPIO_Pin_4,GPIO_Mode_Out_PP_Low_Fast);
/*time2的触发入口*/
GPIO_Init(GPIOB,GPIO_Pin_3,GPIO_Mode_In_FL_IT );
/*GPIOD configuration: CONTROL ALARM (PD3)*/
GPIO_Init(GPIOD,GPIO_Pin_2 | GPIO_Pin_3,GPIO_Mode_Out_PP_Low_Fast);
/*两个外部中断入口*/
GPIO_Init(GPIOE, GPIO_Pin_0 | GPIO_Pin_3, GPIO_Mode_In_FL_IT);
GPIO_Init(GPIOA,GPIO_Pin_1, GPIO_Mode_In_FL_IT);
EXTI_DeInit();
/*模式选择中断入口*/
EXTI_SetPinSensitivity(EXTI_Pin_0,EXTI_Sensitivity_Falling );
/*开关键中断入口*/
EXTI_SetPinSensitivity(EXTI_Pin_3,EXTI_Sensitivity_Falling );
}
TIM1_Cmd(DISABLE);
TIM1_CtrlPWMOutputs(DISABLE);
TIM2_Cmd(DISABLE);
TIM3_Cmd(DISABLE);
ADC_DeInit(ADC1);
ADC_ChannelCmd(ADC1,ADC_Channel_9, DISABLE);
ADC_Cmd(ADC1 ,DISABLE);
ADC_TempSensorCmd(DISABLE);
ADC_VrefintCmd(DISABLE);
/*关闭总中断*/
//disableInterrupts();
PWR_FastWakeUpCmd(DISABLE);
PWR_UltraLowPowerCmd(ENABLE);
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOD);
GPIO_DeInit(GPIOE);
//GPIO_ResetBits(GPIOD, GPIO_Pin_2 | GPIO_Pin_3);
//GPIO_ResetBits(GPIOE, GPIO_Pin_0 | GPIO_Pin_3);
GPIO_Init(GPIOA, GPIO_Pin_All,GPIO_Mode_In_PU_No_IT );
GPIO_Init(GPIOB, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7,GPIO_Mode_In_PU_No_IT );
GPIO_Init(GPIOC, GPIO_Pin_All,GPIO_Mode_In_PU_No_IT );
GPIO_Init(GPIOD, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7,GPIO_Mode_In_PU_No_IT );
GPIO_Init(GPIOE, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7,GPIO_Mode_In_PU_No_IT );
GPIO_Init(GPIOE, GPIO_Pin_3, GPIO_Mode_In_FL_IT);
EXTI_DeInit();
EXTI_SetPinSensitivity(EXTI_Pin_3,EXTI_Sensitivity_Falling );
enableInterrupts();
GPIO_ResetBits(GPIOB, GPIO_Pin_4);
GPIO_ResetBits(GPIOD, GPIO_Pin_3);
//GPIO_Init(GPIOE, GPIO_Pin_3, GPIO_Mode_In_FL_IT);
//GPIO_Init(GPIOE, GPIO_Pin_3, GPIO_Mode_In_FL_IT);
GPIO_Init(GPIOF, GPIO_Pin_0,GPIO_Mode_In_PU_No_IT );
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_LCD, DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);
halt(); //system go to halt mode; |