功耗太高了,沒有外圍設(shè)備4Ma,耗電太快了,得加低功耗功能,代碼很簡(jiǎn)單,就是main里進(jìn)入待機(jī)(睡眠功耗也高),中斷觸發(fā)一次,main里繼續(xù)待機(jī),但是 中斷只觸了一次,一直在串口顯示一直在中斷,好奇怪,下面是在例程里改的
/**********************************?(C)?COPYRIGHT?******************************* ?*?File?Name??????????:?main.c ?*?Author?????????????:?WCH ?*?Version????????????:?V1.0.0 ?*?Date???????????????:?2023/12/25 ?*?Description????????:?Main?program?body. ?********************************************************************************* ?*?Copyright?(c)?2021?Nanjing?Qinheng?Microelectronics?Co.,?Ltd. ?*?Attention:?This?software?(modified?or?not)?and?binary?are?used?for ?*?microcontroller?manufactured?by?Nanjing?Qinheng?Microelectronics. ?*******************************************************************************/ /* ?*@Note ?*low?power,?sleep?mode?routine: ?*EXTI_Line0(PD0) ?*This?routine?demonstrates?that?WFI?enters?the?sleep?mode,?and?the?PD0?pin?input ?*low?level?triggers?the?external?interrupt?EXTI_Line0?to?exit?the?sleep?mode, ?*Program?execution?continues?after?wake-up. ?* ?*/ #include?"debug.h" /*?Global?define?*/ /*?Global?Variable?*/ /********************************************************************* ?*?@fn??????EXTI0_INT_INIT ?* ?*?@brief???Initializes?EXTI0?collection. ?* ?*?@return??none ?*/ void?EXTI0_INT_INIT(void) { ????GPIO_InitTypeDef?GPIO_InitStructure?=?{0}; ????EXTI_InitTypeDef?EXTI_InitStructure?=?{0}; ????NVIC_InitTypeDef?NVIC_InitStructure?=?{0}; ????RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO?|?RCC_APB2Periph_GPIOC,?ENABLE); ????GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_1; ????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IPU; ????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz; ????GPIO_Init(GPIOC,?&GPIO_InitStructure); ????/*?GPIOA.0?---->?EXTI_Line0?*/ ????GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,?GPIO_PinSource1); ????EXTI_InitStructure.EXTI_Line?=?EXTI_Line1; ????EXTI_InitStructure.EXTI_Mode?=?EXTI_Mode_Interrupt; ????EXTI_InitStructure.EXTI_Trigger?=?EXTI_Trigger_Rising_Falling; ????EXTI_InitStructure.EXTI_LineCmd?=?ENABLE; ????EXTI_Init(&EXTI_InitStructure); ????NVIC_InitStructure.NVIC_IRQChannel?=?EXTI7_0_IRQn; ????NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=?0; ????NVIC_InitStructure.NVIC_IRQChannelSubPriority?=?1; ????NVIC_InitStructure.NVIC_IRQChannelCmd?=?ENABLE; ????NVIC_Init(&NVIC_InitStructure); } /********************************************************************* ?*?@fn??????main ?* ?*?@brief???Main?program. ?* ?*?@return??none ?*/ int?main(void) { ????NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); ????SystemCoreClockUpdate(); ????Delay_Init(); ????Delay_Ms(1000); ????Delay_Ms(1000); #if?(SDI_PRINT?==?SDI_PR_OPEN) ????SDI_Printf_Enable(); #else ????USART_Printf_Init(115200); #endif ????printf("SystemClk:%d\r\n",?SystemCoreClock); ????printf(?"ChipID:%08x\r\n",?DBGMCU_GetCHIPID()?); ????printf("Sleep?Mode?Test\r\n"); ????EXTI0_INT_INIT(); ????printf("\r\n?**********?\r\n"); ????__WFE(); ????printf("\r\n?##########?\r\n"); ????while(1) ????{ ????????Delay_Ms(1000); ????????printf("Run?in?PWR_STANDBYEntry_WFI??main\r\n"); ????????PWR_EnterSTANDBYMode(PWR_STANDBYEntry_WFE); ????} } void?EXTI7_0_IRQHandler(void)?__attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* ?*?@fn??????EXTI0_IRQHandler ?* ?*?@brief???This?function?handles?EXTI0?Handler. ?* ?*?@return??none ?*/ void?EXTI7_0_IRQHandler(void) { ????if(EXTI_GetITStatus(EXTI_Line1)!=RESET) ????{ ????????printf("EXTI7_0_IRQHandler?EXTI0?Wake_up\r\n"); ????????EXTI_ClearITPendingBit(EXTI_Line0);?????/*?Clear?Flag?*/ //????????Delay_Ms(2000); //????????PWR_EnterSTANDBYMode(PWR_STANDBYEntry_WFI); //????????__WFE(); ????} }