STM32 controls the lighting of the LED lanterns with interrupts

2023-01-11  

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)
	{
	
	}
}


source

Random Posts

python reptile -xpath

Kotlin’s environmental configuration and application on Android Studio (1)

Linux trivial knowledge point summary

Design mode series 5: adapter mode Eric The

c# window uses API analog keyboard output