furi_hal_interrupt.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. #include <stm32wbxx_ll_tim.h>
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /** Timer ISR */
  7. typedef void (*FuriHalInterruptISR)(void* context);
  8. typedef enum {
  9. // TIM1, TIM16, TIM17
  10. FuriHalInterruptIdTim1TrgComTim17,
  11. FuriHalInterruptIdTim1Cc,
  12. FuriHalInterruptIdTim1UpTim16,
  13. // TIM2
  14. FuriHalInterruptIdTIM2,
  15. // DMA1
  16. FuriHalInterruptIdDma1Ch1,
  17. FuriHalInterruptIdDma1Ch2,
  18. FuriHalInterruptIdDma1Ch3,
  19. FuriHalInterruptIdDma1Ch4,
  20. FuriHalInterruptIdDma1Ch5,
  21. FuriHalInterruptIdDma1Ch6,
  22. FuriHalInterruptIdDma1Ch7,
  23. // DMA2
  24. FuriHalInterruptIdDma2Ch1,
  25. FuriHalInterruptIdDma2Ch2,
  26. FuriHalInterruptIdDma2Ch3,
  27. FuriHalInterruptIdDma2Ch4,
  28. FuriHalInterruptIdDma2Ch5,
  29. FuriHalInterruptIdDma2Ch6,
  30. FuriHalInterruptIdDma2Ch7,
  31. // RCC
  32. FuriHalInterruptIdRcc,
  33. // Comp
  34. FuriHalInterruptIdCOMP,
  35. // HSEM
  36. FuriHalInterruptIdHsem,
  37. // Service value
  38. FuriHalInterruptIdMax,
  39. } FuriHalInterruptId;
  40. /** Initialize interrupt subsystem */
  41. void furi_hal_interrupt_init();
  42. /** Set ISR and enable interrupt with default priority
  43. * We don't clear interrupt flags for you, do it by your self.
  44. * @param index - interrupt ID
  45. * @param isr - your interrupt service routine or use NULL to clear
  46. * @param context - isr context
  47. */
  48. void furi_hal_interrupt_set_isr(FuriHalInterruptId index, FuriHalInterruptISR isr, void* context);
  49. /** Set ISR and enable interrupt with custom priority
  50. * We don't clear interrupt flags for you, do it by your self.
  51. * @param index - interrupt ID
  52. * @param priority - 0 to 15, 0 highest
  53. * @param isr - your interrupt service routine or use NULL to clear
  54. * @param context - isr context
  55. */
  56. void furi_hal_interrupt_set_isr_ex(
  57. FuriHalInterruptId index,
  58. uint16_t priority,
  59. FuriHalInterruptISR isr,
  60. void* context);
  61. #ifdef __cplusplus
  62. }
  63. #endif