STM32F103 minimum system board
pc13 Pick a LED light
First configure the LED light
void LED_INIT (VOID)
{{
Gpio_inittypedef gpio_initStruction;
RCC_APB2PERIPHCLOCKCMD (RCC_APB2PERIPH_GPIOC, Enable);
// Initialize PC13 for push -pull output
Gpio_initStruction.gpio_pin = gpio_pin_13;
Gpio_initStruction.gpio_speed = gpio_speed_50MHz;
Gpio_initStruction.gpio_mode = gpio_mode_out_pp;
Gpio_init (GPIOC, & GPIO_INITSTRUCTURE);
}
Then the keyboard is configured to draw and configure the EXTI function of the pull -up type input and configuration
void exti_key_init (void) // Configure PB11 to trigger a decrease
{{
Gpio_inittypedef gpio_initStruction;
Exti_inittypedef EXTI_INITSTRUCTUR
Nvic_inittypedef nvic_initstruction;
// Configure the pinch clock and reuse clock
RCC_APB2PERIPHCLOCKCMD (RCC_APB2PERIPH_GPIOB | RCC_APB2PERIPH_AFIO, Enable);
// Configure GPIO to pull input
Gpio_initStructure.gpio_pin = gpio_pin_11 | gpio_pin_10;
Gpio_initStruction.gpio_speed = gpio_speed_50MHz;
Gpio_initStruction.gpio_mode = gpio_mode_ipu;
Gpio_init (GPIOB, & GPIO_INITSTRUCTURE);
// Configure the GPIO port as an external interrupt mode
Gpio_extilineconfig (GPIO_PORTSOURCEGPIOB, GPIO_PINSOURCE11);
Gpio_extilineconfig (GPIO_PORTSOURCEGPIOB, GPIO_PINSOURCE10);
// Configure EXTI_LINE10 interrupt trigger mode
Exti_initStruction.exti_line = EXTI_LINE10;
EXTI_INITSTRUCTURURURE.EXTI_MODE = EXTI_MODE_INTERUPT;
Exti_initStruction.exti_trigger = EXTI_TRIGGER_FALLING;
Exti_initStruction.exti_linecmd = ENABLE;
Exti_init (& exti_initStruction);
Exti_initStruction.exti_line = EXTI_LINE11;
EXTI_INITSTRUCTURURURE.EXTI_MODE = EXTI_MODE_INTERUPT;
Exti_initStruction.exti_trigger = EXTI_TRIGGER_FALLING;
Exti_initStruction.exti_linecmd = ENABLE;
Exti_init (& exti_initStruction);
// Configure the interrupt priority of EXTI
Nvic_initStruction.nvic_irqChannel = EXTI15_10_IRQN;
Nvic_initStructure.nvic_irqChannelPreMptionPriority = 0;
Nvic_initStruction.nvic_irqChannelsubpriority = 0;
Nvic_initStruction.nvic_irqChannelcmd = ENABLE;
Nvic_init (& nvic_initStruction);
}
void exti15_10_irqhandler (void)
{{
If (Exti_getFlagStatus (EXTI_LINE10) == 1) // Determine which button input
{{
LED = 0;
EXTI_CLEARFLAG (EXTI_LINE10);
}
If (EXTI_getFlagStatus (EXTI_LINE11) == 1) // Determine which button input
{{
LED = 1;
EXTI_CLEARFLAG (EXTI_LINE11);
}
}
Initialize the LED EXTI function in the main function
int main(void)
{
NVIC_Configuration();
LED_Init();
EXTI_KEY_Init();
delay_init();
while(1)
{
}
}