Skip to main content

EXTI MCAL Module

Supported STM32 families: F4 · G4 · H5 · U5
Not supported: H7, L4

The EXTI (External Interrupt) MCAL module provides an abstraction layer for managing external interrupt lines on STM32 microcontrollers.
This module is part of the MCAL layer and ensures a unified API across different STM32 families.
Different families are maintained in separate branches; users can switch to the appropriate branch for their MCU family.


Features​

  • Initialization and deinitialization of EXTI peripheral
  • Task handler for periodic servicing
  • Support for default configuration retrieval
  • Standardized request state return values
  • Versioning support for module management

Public API​

Module Information​

  • exti_ModuleVersion_t Exti_Get_ModuleVersion ( void );
    Returns the current version of the EXTI module.

Initialization​

- exti_RequestState_t Exti_Init ( exti_PeriphConfig_t * const extiConfig );

Initializes the EXTI peripheral with the provided configuration.

- exti_RequestState_t Exti_Deinit ( exti_PeriphConfig_t * const extiConfig );

Deinitializes the EXTI peripheral and resets the configuration.

- void Exti_Task ( void );

Handles EXTI-related periodic tasks (if required by the implementation).

- exti_RequestState_t Exti_Get_DefaultConfig ( exti_PeriphConfig_t * const extiConfig );

Retrieves a default configuration structure for EXTI initialization.


Usage Notes​

  • The EXTI module is hardware dependent and must be configured per STM32 family branch.
  • The default configuration API helps to ensure safe initialization.
  • The Task function should be periodically called if asynchronous handling or background processing is implemented.

🛠 CMake Integration

target_link_libraries(User_Lib PRIVATE Exti_Lib)

License​

This project is licensed under the Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0).

You are free to use, modify, and share this work for non-commercial purposes, provided appropriate credit is given.

See LICENSE.md for full terms or visit creativecommons.org/licenses/by-nc/4.0.


Authors​

Contributions are welcome! Please open a pull request.