/** * @brief This function handles the LVD Output interrupt request. * @param None * @retval None */ void LVD_IRQHandler(void) { if(EXTI_GetIntBitState(EXTI_LINE16) != RESET) { GPIO_WriteBit(LED1_GPIO_PORT, LED1_PIN, (BitState)((1-GPIO_ReadOutputBit(LED1_GPIO_PORT, LED1_PIN)))); EXTI_ClearIntBitState(EXTI_LINE16); } }
void EXTI4_15_IRQHandler(void) { if (EXTI_GetIntBitState(CHARGING_EXTILINE) != RESET) { if (check_charging() == CHARGING && get_charger_plug_flag() == CHARGER_UNPLUGGED) { set_charger_plug_flag(); reboot_system(SUCCESS); } EXTI_ClearIntBitState(CHARGING_EXTILINE); } }
/** * @brief Configure the selected EXTI line. * @param None * @retval None */ void EXTI_Configuration(void) { EXTI_InitPara EXTI_InitStructure; /* Configure EXTI Line16(LVD Output) to generate an interrupt on rising and falling edges */ EXTI_ClearIntBitState(EXTI_LINE16); EXTI_InitStructure.EXTI_LINE = EXTI_LINE16; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LINEEnable = ENABLE; EXTI_Init(&EXTI_InitStructure); }
/** * @brief This function handles EXTI4_15 interrupt request. * @param None * @retval None */ void EXTI4_15_IRQHandler(void) { /* Get the button interrupt bit state */ if(EXTI_GetIntBitState(EXTI_LINE7) != RESET) { ByteNumber = 2; CEC_SendData(0x12); SendBuffer = TransmitBuffer1; CEC_StartOfMessage(); EXTI_ClearIntBitState(EXTI_LINE7); } /* Get the button interrupt bit state */ else if(EXTI_GetIntBitState(EXTI_LINE13) != RESET) { ByteNumber = 2; CEC_SendData(0x12); SendBuffer = TransmitBuffer2; CEC_StartOfMessage(); EXTI_ClearIntBitState(EXTI_LINE13); } }
void exti_charging_deinit() { EXTI_InitPara EXTI_InitStructure; RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_CFG, ENABLE); /* Connect key EXTI Line to key GPIO Pin */ SYSCFG_EXTILine_Config(CHARGING_EXTI_GPIO, CHARGING_EXTI_PIN); /* Configure increase key EXTI line */ EXTI_InitStructure.EXTI_LINE = CHARGING_EXTILINE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LINEEnable = DISABLE; EXTI_Init(&EXTI_InitStructure); EXTI_ClearIntBitState(CHARGING_EXTILINE); }
void exti_charging_init() { NVIC_InitPara NVIC_InitStructure; EXTI_InitPara EXTI_InitStructure; RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_CFG, ENABLE); /* Connect key EXTI Line to key GPIO Pin */ SYSCFG_EXTILine_Config(CHARGING_EXTI_GPIO, CHARGING_EXTI_PIN); /* Configure increase key EXTI line */ EXTI_ClearIntBitState(CHARGING_EXTILINE); EXTI_InitStructure.EXTI_LINE = CHARGING_EXTILINE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LINEEnable = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI_ClearIntBitState(CHARGING_EXTILINE); NVIC_InitStructure.NVIC_IRQ = CHARGING_EXTI_IRQ; //使能按键所在的外部中断通道 NVIC_InitStructure.NVIC_IRQPreemptPriority = 0x01; //抢占优先级1 NVIC_InitStructure.NVIC_IRQSubPriority = 0x00; //子优先级1 NVIC_InitStructure.NVIC_IRQEnable = ENABLE; //使能外部中断通道 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器 }
/** * @brief Main program. * @param None * @retval None */ int main(void) { /* Configure the USART peripheral ----------------------------------------*/ USART_InitStructure.USART_BRR = 115200; USART_InitStructure.USART_WL = USART_WL_8B; USART_InitStructure.USART_STBits = USART_STBITS_1; USART_InitStructure.USART_Parity = USART_PARITY_RESET; USART_InitStructure.USART_HardwareFlowControl = USART_HARDWAREFLOWCONTROL_NONE ; USART_InitStructure.USART_RxorTx = USART_RXORTX_RX | USART_RXORTX_TX; GD_EVAL_COMInit(&USART_InitStructure); printf("\n\r *********************** RTC Calendar Demo ***********************\n\r"); /* Check if RTC has aready been configured */ if (RTC->BKP0R != BKP_VALUE) { RTC_PreConfiguration(); RTC_Setup(); } else { /* Detect the reset source */ if (RCC_GetBitState(RCC_FLAG_POPDRST) != RESET) { printf("\r\n Power On Reset Occurred....\n\r"); } else if (RCC_GetBitState(RCC_FLAG_EPRST) != RESET) { printf("\r\n External Reset Occurred....\n\r"); } printf("\n\r No Need To Configure RTC....\n\r"); #ifdef RTC_CLOCK_SOURCE_LSI RCC_LSI_Enable(ENABLE); #endif RTC_WaitRSF_ToSetAgain(); RTC_ClearBitState(RTC_STR_AF); EXTI_ClearIntBitState(EXTI_LINE17); RTC_ShowTime(); RTC_ShowAlarm(); } RCC_ClearBitState(); /* LED1 GPIO Initialization */ RCC_AHBPeriphClock_Enable(LED1_GPIO_CLK, ENABLE); GPIO_InitStructure.GPIO_Pin = LED1_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ; GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure); LED1_GPIO_PORT->BOR = LED1_PIN; /* LED2 GPIO Initialization */ RCC_AHBPeriphClock_Enable(LED2_GPIO_CLK, ENABLE); GPIO_InitStructure.GPIO_Pin = LED2_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ; GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure); LED2_GPIO_PORT->BOR = LED2_PIN; /* RTC ALARM Interrupt Configuration */ EXTI_ClearIntBitState(EXTI_LINE17); EXTI_InitStructure.EXTI_LINE = EXTI_LINE17; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LINEEnable = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQ = RTC_IRQn; NVIC_InitStructure.NVIC_IRQPreemptPriority = 0; NVIC_InitStructure.NVIC_IRQSubPriority = 0; NVIC_InitStructure.NVIC_IRQEnable = ENABLE; NVIC_Init(&NVIC_InitStructure); while (1) { } }