Flipper Zero Firmware
Loading...
Searching...
No Matches
furi_hal_interrupt.h
1#pragma once
2
3#include <stm32wbxx_ll_tim.h>
4
5#ifdef __cplusplus
6extern "C" {
7#endif
8
10typedef void (*FuriHalInterruptISR)(void* context);
11
12typedef enum {
13 // TIM1, TIM16, TIM17
14 FuriHalInterruptIdTim1TrgComTim17,
15 FuriHalInterruptIdTim1Cc,
16 FuriHalInterruptIdTim1UpTim16,
17
18 // TIM2
19 FuriHalInterruptIdTIM2,
20
21 // DMA1
22 FuriHalInterruptIdDma1Ch1,
23 FuriHalInterruptIdDma1Ch2,
24 FuriHalInterruptIdDma1Ch3,
25 FuriHalInterruptIdDma1Ch4,
26 FuriHalInterruptIdDma1Ch5,
27 FuriHalInterruptIdDma1Ch6,
28 FuriHalInterruptIdDma1Ch7,
29
30 // DMA2
31 FuriHalInterruptIdDma2Ch1,
32 FuriHalInterruptIdDma2Ch2,
33 FuriHalInterruptIdDma2Ch3,
34 FuriHalInterruptIdDma2Ch4,
35 FuriHalInterruptIdDma2Ch5,
36 FuriHalInterruptIdDma2Ch6,
37 FuriHalInterruptIdDma2Ch7,
38
39 // RCC
40 FuriHalInterruptIdRcc,
41
42 // Comp
43 FuriHalInterruptIdCOMP,
44
45 // HSEM
46 FuriHalInterruptIdHsem,
47
48 // LPTIMx
49 FuriHalInterruptIdLpTim1,
50 FuriHalInterruptIdLpTim2,
51
52 //UARTx
53 FuriHalInterruptIdUart1,
54
55 //LPUARTx
56 FuriHalInterruptIdLpUart1,
57
58 // Service value
59 FuriHalInterruptIdMax,
60} FuriHalInterruptId;
61
62typedef enum {
63 FuriHalInterruptPriorityLowest =
64 -3,
65 FuriHalInterruptPriorityLower =
66 -2,
67 FuriHalInterruptPriorityLow =
68 -1,
69 FuriHalInterruptPriorityNormal =
70 0,
71 FuriHalInterruptPriorityHigh =
72 1,
73 FuriHalInterruptPriorityHigher =
74 2,
75 FuriHalInterruptPriorityHighest =
76 3,
78 /* Special group, read docs first(ALL OF THEM: especially FreeRTOS configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY) */
79 FuriHalInterruptPriorityKamiSama =
80 6,
81} FuriHalInterruptPriority;
82
84void furi_hal_interrupt_init(void);
85
95void furi_hal_interrupt_set_isr(FuriHalInterruptId index, FuriHalInterruptISR isr, void* context);
96
107void furi_hal_interrupt_set_isr_ex(
108 FuriHalInterruptId index,
109 FuriHalInterruptPriority priority,
110 FuriHalInterruptISR isr,
111 void* context);
112
119const char* furi_hal_interrupt_get_name(uint8_t exception_number);
120
125uint32_t furi_hal_interrupt_get_time_in_isr_total(void);
126
127#ifdef __cplusplus
128}
129#endif