Approved version. Approved on: 11:41, 13 June 2022
You are viewing an old version of this page. Return to the latest version.
- Last edited 8 months ago ago
Getting started with EXTI
Revision as of 11:41, 13 June 2022 by Registered User
This article explains the EXTI and its use, with examples.
Contents
1 External interrupt/event controller (EXTI)
The external interrupt/event controller consists of up to 23 edge detectors for generating event/interrupt requests. Each input line can be independently configured to select the type (interrupt or event) and the corresponding trigger event (rising, falling, or both).
2 Configure EXTI to turn on an LED when a user button is pressed
2.1 Objective
- Set up an input pin with EXTI in STM32CubeMX.
- Generate code in STM32CubeMX and use HAL functions.
2.2 How
- Configure a GPIO and EXTI pin in STM32CubeMX and generate code.
- Add into a project: a callback function, and a function to turn on an LED.
- Verify the correct functionality by pressing a button that turns on an LED.
2.3 Create project in STM32CubeMX
- Menu > File > New Project
- Select STM32F439ZITx
- Configure an LED pin as GPIO_Output (PG14 on NucleoF439ZI). For other boards check their user manual.
- Configure a button pin as GPIO_EXTIX (PA0 on NucleoF439ZI). For other boards check their user manual.
- GPIO configuration check
- Enable the interrupt for EXTI
- Save your project and generate the code for your IDE.
2.4 HAL Library workflow summary
2.5 Open your IDE
Create a function to handle the EXTI interrupts:
- HAL callback function for EXTI: void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
- To turn an LED on we need to use the function: HAL_GPIO_WritePin
Put the functions into main.c
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_0) {
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET);
} else {
__NOP();
}
}
/* USER CODE END 4 */
2.6 Compile and Flash
Compile the above code, then load it to the board flash memory.
- When you press the blue button on your board the LED must switch on.