void light_senser_init(void) { gpio_in_up_init(GPIOE, 0XFF81); exti_config(GPIOD, 11); }
void nano_board_key_init(void) { gpio_in_up_init(GPIOC, GPIO_Pin_0); }
void exti_config(GPIO_TypeDef *gpiox, u8 pin_num) { EXTI_InitTypeDef EXTI_InitStructure; u8 exti_port_source_gpio; u32 pin_line = 0x00000001<<pin_num; uint8_t irq_channel; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); gpio_in_up_init(gpiox, pin_line); if(gpiox == GPIOA){ exti_port_source_gpio = EXTI_PortSourceGPIOA; } else if(gpiox == GPIOB){ exti_port_source_gpio = EXTI_PortSourceGPIOB; } else if(gpiox == GPIOC){ exti_port_source_gpio = EXTI_PortSourceGPIOC; } else if(gpiox == GPIOD){ exti_port_source_gpio = EXTI_PortSourceGPIOD; } else if(gpiox == GPIOE){ exti_port_source_gpio = EXTI_PortSourceGPIOE; } else if(gpiox == GPIOF){ exti_port_source_gpio = EXTI_PortSourceGPIOF; } else if(gpiox == GPIOG){ exti_port_source_gpio = EXTI_PortSourceGPIOG; } else if(gpiox == GPIOH){ exti_port_source_gpio = EXTI_PortSourceGPIOH; } else if(gpiox == GPIOI){ exti_port_source_gpio = EXTI_PortSourceGPIOI; } else if(gpiox == GPIOJ){ exti_port_source_gpio = EXTI_PortSourceGPIOJ; } else if(gpiox == GPIOK){ exti_port_source_gpio = EXTI_PortSourceGPIOK; } else{ printf("GPIO Port is not supported!\r\n"); while(1); } SYSCFG_EXTILineConfig(exti_port_source_gpio, pin_num); EXTI_InitStructure.EXTI_Line = pin_line; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); if(pin_num >= 10){ irq_channel = EXTI15_10_IRQn; } else if(pin_num >= 5){ irq_channel = EXTI9_5_IRQn; } else { irq_channel = pin_num + 6; } nvic_config(irq_channel, 10); }