HAL_EXTI.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /*
  2. ******************************************************************************
  3. * @file HAL_EXTI.h
  4. * @version V1.0.0
  5. * @date 2020
  6. * @brief Header file of EXTI HAL module.
  7. ******************************************************************************
  8. */
  9. #ifndef __HAL_EXTI_H__
  10. #define __HAL_EXTI_H__
  11. #include "ACM32Fxx_HAL.h"
  12. /** @defgroup EXTI_Line EXTI Line
  13. * @{
  14. */
  15. #define EXTI_LINE_0 (0x000001)
  16. #define EXTI_LINE_1 (0x000002)
  17. #define EXTI_LINE_2 (0x000004)
  18. #define EXTI_LINE_3 (0x000008)
  19. #define EXTI_LINE_4 (0x000010)
  20. #define EXTI_LINE_5 (0x000020)
  21. #define EXTI_LINE_6 (0x000040)
  22. #define EXTI_LINE_7 (0x000080)
  23. #define EXTI_LINE_8 (0x000100)
  24. #define EXTI_LINE_9 (0x000200)
  25. #define EXTI_LINE_10 (0x000300)
  26. #define EXTI_LINE_11 (0x000400)
  27. #define EXTI_LINE_12 (0x001000)
  28. #define EXTI_LINE_13 (0x002000)
  29. #define EXTI_LINE_14 (0x004000)
  30. #define EXTI_LINE_15 (0x008000)
  31. #define EXTI_LINE_16 (0x010000)
  32. #define EXTI_LINE_17 (0x020000)
  33. #define EXTI_LINE_18 (0x040000)
  34. #define EXTI_LINE_19 (0x080000)
  35. #define EXTI_LINE_20 (0x100000)
  36. #define EXTI_LINE_21 (0x200000)
  37. #define EXTI_LINE_22 (0x400000)
  38. #define EXTI_LINE_23 (0x800000)
  39. #define EXTI_LINE_MASK (0xFFFFFFU)
  40. /**
  41. * @}
  42. */
  43. /** @defgroup EXTI_Mode EXTI Mode
  44. * @{
  45. */
  46. #define EXTI_MODE_INTERRUPT (0x00000001)
  47. #define EXTI_MODE_EVENT (0x00000002)
  48. /**
  49. * @}
  50. */
  51. /** @defgroup EXTI_Trigger EXTI Trigger
  52. * @{
  53. */
  54. #define EXTI_TRIGGER_RISING (0x00000001)
  55. #define EXTI_TRIGGER_FALLING (0x00000002)
  56. #define EXTI_TRIGGER_RISING_FALLING (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
  57. /**
  58. * @}
  59. */
  60. /** @defgroup EXTI_GPIOSel EXTI GPIOSel
  61. * @brief
  62. * @{
  63. */
  64. #define EXTI_GPIOA 0x00000000u
  65. #define EXTI_GPIOB 0x00000001u
  66. #define EXTI_GPIOC 0x00000002u
  67. #define EXTI_GPIOD 0x00000003u
  68. #define EXTI_GPIOE 0x00000004u
  69. #define EXTI_GPIOF 0x00000005u
  70. /**
  71. * @}
  72. */
  73. /**
  74. * @brief EXTI Configuration structure definition
  75. */
  76. typedef struct
  77. {
  78. uint32_t u32_Line; /*!< The Exti line to be configured. This parameter
  79. can be a value of @ref EXTI_Line */
  80. uint32_t u32_Mode; /*!< The Exit Mode to be configured for a core.
  81. This parameter can be a combination of @ref EXTI_Mode */
  82. uint32_t u32_Trigger; /*!< The Exti Trigger to be configured. This parameter
  83. can be a value of @ref EXTI_Trigger */
  84. uint32_t u32_GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured.
  85. This parameter is only possible for line 0 to 15. It
  86. can be a value of @ref EXTI_GPIOSel */
  87. }EXTI_HandleTypeDef;
  88. /** @defgroup EXTI Private Macros
  89. * @{
  90. */
  91. #define IS_EXTI_ALL_LINE(LINE) ( (LINE) | (EXTI_LINE_MASK) )
  92. #define IS_EXTI_MODE(__MODE__) (((__MODE__) == EXTI_MODE_INTERRUPT) || \
  93. ((__MODE__) == EXTI_MODE_EVENT))
  94. #define IS_EXTI_TRIGGER(__TRIGGER__) (((__TRIGGER__) == EXTI_TRIGGER_RISING) || \
  95. ((__TRIGGER__) == EXTI_TRIGGER_FALLING) || \
  96. ((__TRIGGER__) == EXTI_TRIGGER_RISING_FALLING))
  97. #define IS_EXTI_GPIOSEL(__GPIOSEL__) (((__GPIOSEL__) == EXTI_GPIOA) || \
  98. ((__GPIOSEL__) == EXTI_GPIOB) || \
  99. ((__GPIOSEL__) == EXTI_GPIOC) || \
  100. ((__GPIOSEL__) == EXTI_GPIOD) || \
  101. ((__GPIOSEL__) == EXTI_GPIOE) || \
  102. ((__GPIOSEL__) == EXTI_GPIOF))
  103. /**
  104. * @}
  105. */
  106. /** @brief __HAL_EXTI_LINE_IT_ENABLE
  107. * @param __LINE__: EXTI line.
  108. * This parameter can be a value of @ref EXTI_Line
  109. */
  110. #define __HAL_EXTI_LINE_IT_ENABLE(__LINE__) (EXTI->IENR |= (__LINE__))
  111. /** @brief __HAL_EXTI_LINE_IT_DISABLE
  112. * @param __LINE__: EXTI line.
  113. * This parameter can be a value of @ref EXTI_Line
  114. */
  115. #define __HAL_EXTI_LINE_IT_DISABLE(__LINE__) (EXTI->IENR &= ~(__LINE__))
  116. /** @brief __HAL_EXTI_LINE_EVENT_ENABLE
  117. * @param __LINE__: EXTI line.
  118. * This parameter can be a value of @ref EXTI_Line
  119. */
  120. #define __HAL_EXTI_LINE_EVENT_ENABLE(__LINE__) (EXTI->EENR |= (__LINE__))
  121. /** @brief __HAL_EXTI_LINE_EVENT_DISABLE
  122. * @param __LINE__: EXTI line.
  123. * This parameter can be a value of @ref EXTI_Line
  124. */
  125. #define __HAL_EXTI_LINE_EVENT_DISABLE(__LINE__) (EXTI->EENR &= ~(__LINE__))
  126. /* HAL_EXTI_IRQHandler */
  127. void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *huart);
  128. /* HAL_EXTI_SetConfigLine */
  129. HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti);
  130. /* HAL_EXTI_SoftTrigger */
  131. void HAL_EXTI_SoftTrigger(EXTI_HandleTypeDef *hexti);
  132. /* HAL_EXTI_GetPending */
  133. bool HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti);
  134. /* HAL_EXTI_ClearPending */
  135. void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti);
  136. /* HAL_EXTI_ClearAllPending */
  137. void HAL_EXTI_ClearAllPending(void);
  138. #endif