diff --git a/peripherals/interrupt/interrupt.c b/peripherals/interrupt/interrupt.c new file mode 100644 index 0000000..2ab22fc --- /dev/null +++ b/peripherals/interrupt/interrupt.c @@ -0,0 +1,2 @@ +#include "interrupt.h" + diff --git a/peripherals/interrupt/interrupt.h b/peripherals/interrupt/interrupt.h new file mode 100644 index 0000000..d7e0322 --- /dev/null +++ b/peripherals/interrupt/interrupt.h @@ -0,0 +1,98 @@ +/** +************************************************************************************************** +* @file interrupt.h +* @author Kerem Yollu & Edwin Koch +* @date 30.10.2022 +* @version 1.0 +************************************************************************************************** +* @brief This is the genral interface for interrupts. +* +* **Detailed Description :** +* This the spi interface and belongs to the interface layer. +* +************************************************************************************************** +*/ + +#ifndef _INTERRUPT_H_ +#define _INTERRUPT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "hwd_interrupt.h" + +/*! interrupt callback type for the handler */ +typedef void (*intHandler_t)(void); + +/** + * @brief Initialize Interrupt + * + * Initialize Interrupt by choosing the interrupt type, passing the functionpointer to the handler + * and selecting the priority. + * The interrupt will be automatically enabled and will be able to run after intEnableAll is + * called. If the interrupt should only run at a specific even one can controll it by calling + * intDissable prior to calling intEnableAll and calling intEnbale at a specific point and + * dissabling it again with intDisable + * When the desired interrupt occures the handler will be called. + * The interrupt type and priority level is dependent on the architecture of the target MCU. + * To find more information on what can be done one must read the documentation specific to the + * target MCU. + * + * @param intType interrupt type + * @param handler the interrupthandler + * @param priority the interrupt priority + */ +void intInit( + intrType_t intType, + intHandler_t handler, + uint8_t priority); + +/** + * @brief Enable all Interrupts + * + * Enables all interrupts globally. + * + */ +void intEnableAll(); + +/** + * @brief Disable all Interrups + * + * Dissables all interrupts globally exept the non maskable ones given by the architecture of the + * MCU. + */ +void intDisableAll(); + +/** + * @brief Enable one interrupt type + * + * The Interrupt for the desired interrupt will be enabled. This means that interrupt of that + * type will occure. To revert this intDisable musst be called. + * It can be called when interrupts are are globally allowed or when disabled. + * + * @param intType interrupt type + */ +void intEnable( + intrType_t intType); + + +/** + * @brief Dissable one interrupt type + * + * The Interrupt for the desired interrupt will be disabled. This means that no interrupt of that + * type will occure. To revert this intEnable musst be called. + * It can be called when interrupts are are globally allowed or when dissabled. + * It will not stop other all interrupts in contrast to intDissableAll. + * + * @param intType interrupt type + */ +void intDisable( + intrType_t intType); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file