1 /* 2 * Copyright 2021 MindMotion Microelectronics Co., Ltd. 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #ifndef __HAL_EXTI_H__ 9 #define __HAL_EXTI_H__ 10 11 #include "hal_common.h" 12 13 /*! 14 * @addtogroup EXTI 15 * @{ 16 */ 17 18 /*! 19 * @brief EXTI driver version number. 20 */ 21 #define EXTI_DRIVER_VERSION 0u /*!< exti_0. */ 22 23 /*! 24 * @addtogroup EXTI_LINE 25 * @{ 26 */ 27 #define EXTI_LINE_0 (1u << 0u) /*!<External Interrupt Line 0 switcher. */ 28 #define EXTI_LINE_1 (1u << 1u) /*!<External Interrupt Line 1 switcher. */ 29 #define EXTI_LINE_2 (1u << 2u) /*!<External Interrupt Line 2 switcher. */ 30 #define EXTI_LINE_3 (1u << 3u) /*!<External Interrupt Line 3 switcher. */ 31 #define EXTI_LINE_4 (1u << 4u) /*!<External Interrupt Line 4 switcher. */ 32 #define EXTI_LINE_5 (1u << 5u) /*!<External Interrupt Line 5 switcher. */ 33 #define EXTI_LINE_6 (1u << 6u) /*!<External Interrupt Line 6 switcher. */ 34 #define EXTI_LINE_7 (1u << 7u) /*!<External Interrupt Line 7 switcher. */ 35 #define EXTI_LINE_8 (1u << 8u) /*!<External Interrupt Line 8 switcher. */ 36 #define EXTI_LINE_9 (1u << 9u) /*!<External Interrupt Line 9 switcher. */ 37 #define EXTI_LINE_10 (1u << 10u) /*!<External Interrupt Line 10 switcher. */ 38 #define EXTI_LINE_11 (1u << 11u) /*!<External Interrupt Line 11 switcher. */ 39 #define EXTI_LINE_12 (1u << 12u) /*!<External Interrupt Line 12 switcher. */ 40 #define EXTI_LINE_13 (1u << 13u) /*!<External Interrupt Line 13 switcher. */ 41 #define EXTI_LINE_14 (1u << 14u) /*!<External Interrupt Line 14 switcher. */ 42 #define EXTI_LINE_15 (1u << 15u) /*!<External Interrupt Line 15 switcher. */ 43 #define EXTI_LINE_16 (1u << 16u) /*!<External Interrupt Line 16 switcher. */ 44 #define EXTI_LINE_17 (1u << 17u) /*!<External Interrupt Line 17 switcher. */ 45 #define EXTI_LINE_18 (1u << 18u) /*!<External Interrupt Line 18 switcher. */ 46 #define EXTI_LINE_19 (1u << 19u) /*!<External Interrupt Line 19 switcher. */ 47 #define EXTI_LINE_20 (1u << 20u) /*!<External Interrupt Line 20 switcher. */ 48 #define EXTI_LINE_21 (1u << 21u) /*!<External Interrupt Line 21 switcher. */ 49 #define EXTI_LINE_22 (1u << 22u) /*!<External Interrupt Line 22 switcher. */ 50 #define EXTI_LINE_23 (1u << 23u) /*!<External Interrupt Line 23 switcher. */ 51 #define EXTI_LINE_24 (1u << 24u) /*!<External Interrupt Line 24 switcher. */ 52 /*! 53 * @} 54 */ 55 56 /*! 57 * @brief EXTI trigger input detection edge alt. 58 */ 59 typedef enum 60 { 61 EXTI_TriggerIn_Disable = 0u, /*!< Disable the trigger input interrupt. */ 62 EXTI_TriggerIn_RisingEdge = 1u, /*!< Trigger input rising edge interrupt.*/ 63 EXTI_TriggerIn_FallingEdge = 2u, /*!< Trigger input falling edge interrupt.*/ 64 EXTI_TriggerIn_BothEdges = 3u, /*!< Both trigger input rising and falling edge interrupt.*/ 65 } EXTI_TriggerIn_Type; 66 67 /*! 68 * @brief Enable the external interrupt line's interrupts. 69 * 70 * @param EXTIx EXTI instance. 71 * @param lines External interrupt lines. See to @ref EXTI_LINE. 72 * @param enable 'true' to unmask the external interrupt lines' interrupt, 'false' to mask the external interrupt lines' interrupt. 73 * @return None. 74 */ 75 void EXTI_EnableLineInterrupt(EXTI_Type * EXTIx, uint32_t lines, bool enable); 76 77 /*! 78 * @brief Enable the external interrupt line's events. 79 * 80 * @param EXTIx EXTI instance. 81 * @param lines External interrupt lines. See to @ref EXTI_LINE. 82 * @param enable 'true' to unmask the external interrupt lines' event, 'false' to disable the external interrupt lines' event. 83 * @return None. 84 */ 85 void EXTI_EnableLineEvent(EXTI_Type * EXTIx, uint32_t lines, bool enable); 86 87 /*! 88 * @brief Set the line input for triggering interrupts. 89 * 90 * @param EXTIx EXTI instance. 91 * @param lines External interrupt lines. See to @ref EXTI_LINE. 92 * @param trgin The active signal for triggering interrupts. See to @ref EXTI_TriggerIn_Type; 93 * @return None. 94 */ 95 void EXTI_SetTriggerIn(EXTI_Type * EXTIx, uint32_t lines, EXTI_TriggerIn_Type trgin); 96 97 /*! 98 * @brief Do software trigger to trigger interrupts of the indicated lines. 99 * 100 * @param EXTIx EXTI instance. 101 * @param lines External interrupt lines. See to @ref EXTI_LINE. 102 * @return None. 103 */ 104 void EXTI_DoSwTrigger(EXTI_Type * EXTIx, uint32_t lines); 105 106 /*! 107 * @brief Get the interrupt status of the indicated EXTI module. 108 * 109 * @param EXTIx EXTI instance. 110 * @return Line status flags. See to @ref EXTI_LINE. 111 */ 112 uint32_t EXTI_GetLineStatus(EXTI_Type * EXTIx); 113 114 /*! 115 * @brief Clear the interrupt status of the indicated EXTI module. 116 * 117 * @param EXTIx EXTI instance. 118 * @param lines Interrupt status flags. See to @ref EXTI_LINE. 119 * @return None. 120 */ 121 void EXTI_ClearLineStatus(EXTI_Type * EXTIx, uint32_t lines); 122 123 /*! 124 * @} 125 */ 126 127 #endif /* __HAL_EXTI_H__ */ 128 129