exti_stm32.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * Copyright (c) 2016 Open-RnD Sp. z o.o.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /**
  7. * @brief Driver for External interrupt/event controller in STM32 MCUs
  8. *
  9. * Based on reference manuals:
  10. * RM0008 Reference Manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx
  11. * and STM32F107xx advanced ARM(r)-based 32-bit MCUs
  12. * and
  13. * RM0368 Reference manual STM32F401xB/C and STM32F401xD/E
  14. * advanced ARM(r)-based 32-bit MCUs
  15. *
  16. * Chapter 10.2: External interrupt/event controller (EXTI)
  17. *
  18. */
  19. #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EXTI_STM32_H_
  20. #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EXTI_STM32_H_
  21. #include <zephyr/types.h>
  22. /**
  23. * @brief enable EXTI interrupt for specific line
  24. *
  25. * @param line EXTI# line
  26. */
  27. void stm32_exti_enable(int line);
  28. /**
  29. * @brief disable EXTI interrupt for specific line
  30. *
  31. * @param line EXTI# line
  32. */
  33. void stm32_exti_disable(int line);
  34. /**
  35. * @brief EXTI trigger flags
  36. */
  37. enum stm32_exti_trigger {
  38. /* clear trigger */
  39. STM32_EXTI_TRIG_NONE = 0x0,
  40. /* trigger on rising edge */
  41. STM32_EXTI_TRIG_RISING = 0x1,
  42. /* trigger on falling endge */
  43. STM32_EXTI_TRIG_FALLING = 0x2,
  44. /* trigger on falling endge */
  45. STM32_EXTI_TRIG_BOTH = 0x3,
  46. };
  47. /**
  48. * @brief set EXTI interrupt line triggers
  49. *
  50. * @param line EXTI# line
  51. * @param trg OR'ed stm32_exti_trigger flags
  52. */
  53. void stm32_exti_trigger(int line, int trg);
  54. /* callback for exti interrupt */
  55. typedef void (*stm32_exti_callback_t) (int line, void *user);
  56. /**
  57. * @brief set EXTI interrupt callback
  58. *
  59. * @param line EXI# line
  60. * @param cb user callback
  61. * @param data user data
  62. */
  63. int stm32_exti_set_callback(int line, stm32_exti_callback_t cb, void *data);
  64. /**
  65. * @brief unset EXTI interrupt callback
  66. *
  67. * @param line EXI# line
  68. */
  69. void stm32_exti_unset_callback(int line);
  70. #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EXTI_STM32_H_ */