furi_hal_interrupt.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. // LPTIMx
  38. FuriHalInterruptIdLpTim1,
  39. FuriHalInterruptIdLpTim2,
  40. // Service value
  41. FuriHalInterruptIdMax,
  42. } FuriHalInterruptId;
  43. /** Initialize interrupt subsystem */
  44. void furi_hal_interrupt_init();
  45. /** Set ISR and enable interrupt with default priority
  46. * We don't clear interrupt flags for you, do it by your self.
  47. * @param index - interrupt ID
  48. * @param isr - your interrupt service routine or use NULL to clear
  49. * @param context - isr context
  50. */
  51. void furi_hal_interrupt_set_isr(FuriHalInterruptId index, FuriHalInterruptISR isr, void* context);
  52. /** Set ISR and enable interrupt with custom priority
  53. * We don't clear interrupt flags for you, do it by your self.
  54. * @param index - interrupt ID
  55. * @param priority - 0 to 15, 0 highest
  56. * @param isr - your interrupt service routine or use NULL to clear
  57. * @param context - isr context
  58. */
  59. void furi_hal_interrupt_set_isr_ex(
  60. FuriHalInterruptId index,
  61. uint16_t priority,
  62. FuriHalInterruptISR isr,
  63. void* context);
  64. #ifdef __cplusplus
  65. }
  66. #endif