software_APIs  1.0.0
irq_api.h
Go to the documentation of this file.
1 
5 #ifndef IRQ_API_C_HEADER_FILE
6 #define IRQ_API_C_HEADER_FILE
7 // IRQ
8 #ifndef DOXYGEN_SHOULD_SKIP_THIS
9 #ifndef ARM
10 extern unsigned int flag;
11 #else
12 unsigned int flag;
13 void HK_IRQ0_Handler(void){flag = 1;}
14 void HK_IRQ1_Handler(void){flag = 1;}
15 void HK_IRQ2_Handler(void){flag = 1;}
16 void TMR0_Handler(void){flag = 1;clear_TMR0_Handler();}
17 void UART0_Handler(void){flag = 1;clear_UART0_Handler();}
18 void clear_TMR0_Handler(){
19 reg_timer0_irq =1;
20 }
21 void clear_UART0_Handler(){
22 reg_uart_isc =0x3;
23 }
24 #endif
25 char IRQ_getFlag(){
26  #ifndef ARM
27  return flag;
28  #else
29  dummyDelay(1);
30  return flag;
31  #endif
32 }
33 
34 void IRQ_clearFlag(){
35  #ifndef ARM
36  flag=0;
37  #else
38  flag=0;
39 
40  #endif
41 }
42 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
43 
49 void IRQ_enableExternal1(bool is_enable){
50  if (is_enable){
51  #ifndef ARM
52  irq_setmask(0);
53  irq_setie(1);
54  irq_setmask(irq_getmask() | (1 << USER_IRQ_4_INTERRUPT));
55  reg_user4_irq_en =1;
56  #else
57  NVIC_EnableIRQ(HK_IRQ1);
58  __enable_irq();
59  #endif
60  }else{
61  #ifndef ARM
62  irq_setmask(0);
63  irq_setie(1);
64  irq_setmask(irq_getmask() & ~(1 << USER_IRQ_4_INTERRUPT));
65  reg_user4_irq_en =0;
66  user_irq_4_ev_pending_i0_write(1); // to clear the interrupt
67  #else
68  NVIC_DisableIRQ(HK_IRQ1);
69  __enable_irq();
70  #endif
71  }
72 }
73 
80 void IRQ_enableExternal2(bool is_enable){
81  if (is_enable){
82  #ifndef ARM
83  irq_setmask(0);
84  irq_setie(1);
85  irq_setmask(irq_getmask() | (1 << USER_IRQ_5_INTERRUPT));
86  reg_user5_irq_en =1;
87  #else
88  NVIC_EnableIRQ(HK_IRQ2);
89  __enable_irq();
90  #endif
91  }else{
92  #ifndef ARM
93  irq_setmask(0);
94  irq_setie(1);
95  irq_setmask(irq_getmask() & ~(1 << USER_IRQ_5_INTERRUPT));
96  reg_user5_irq_en =0;
97  user_irq_5_ev_pending_i0_write(1); // to clear the interrupt
98  #else
99  NVIC_DisableIRQ(HK_IRQ2);
100  __enable_irq();
101  #endif
102  }
103 }
110 void IRQ_enableUser0(bool is_enable){
111  if (is_enable){
112  #ifndef ARM
113  irq_setmask(0);
114  irq_setie(1);
115  irq_setmask(irq_getmask() | (1 << USER_IRQ_0_INTERRUPT));
116  reg_user0_irq_en =1;
117  reg_user_irq_enable |=0x1;
118  #else
119  NVIC_EnableIRQ(HK_IRQ2);
120  __enable_irq();
121  #endif
122  }else{
123  #ifndef ARM
124  irq_setmask(0);
125  irq_setie(1);
126  irq_setmask(irq_getmask() & ~(0 << USER_IRQ_0_INTERRUPT));
127  reg_user0_irq_en =0;
128  reg_user_irq_enable &=0x6;
129  user_irq_0_ev_pending_i0_write(1); // to clear the interrupt
130  #else
131  NVIC_DisableIRQ(HK_IRQ2);
132  __enable_irq();
133  #endif
134  }
135 }
142 void IRQ_enableUser1(bool is_enable){
143  if (is_enable){
144  #ifndef ARM
145  irq_setmask(0);
146  irq_setie(1);
147  irq_setmask(irq_getmask() | (1 << USER_IRQ_1_INTERRUPT));
148  reg_user1_irq_en =1;
149  reg_user_irq_enable |=0x2;
150  #else
151  NVIC_EnableIRQ(HK_IRQ2);
152  __enable_irq();
153  #endif
154  }else{
155  #ifndef ARM
156  irq_setmask(0);
157  irq_setie(1);
158  irq_setmask(irq_getmask() & ~(1 << USER_IRQ_1_INTERRUPT));
159  reg_user1_irq_en =0;
160  reg_user_irq_enable &=0x5;
161  user_irq_1_ev_pending_i0_write(1); // to clear the interrupt
162  #else
163  NVIC_DisableIRQ(HK_IRQ2);
164  __enable_irq();
165  #endif
166  }
167 }
168 
175 void IRQ_enableUser2(bool is_enable){
176  if (is_enable){
177  #ifndef ARM
178  irq_setmask(0);
179  irq_setie(1);
180  irq_setmask(irq_getmask() | (1 << USER_IRQ_2_INTERRUPT));
181  reg_user2_irq_en =1;
182  reg_user_irq_enable |=0x4;
183  #else
184  NVIC_EnableIRQ(HK_IRQ2);
185  __enable_irq();
186  #endif
187  }else{
188  #ifndef ARM
189  irq_setmask(0);
190  irq_setie(1);
191  irq_setmask(irq_getmask() & ~(1 << USER_IRQ_2_INTERRUPT));
192  reg_user2_irq_en =0;
193  reg_user_irq_enable &=0x3;
194  user_irq_2_ev_pending_i0_write(1); // to clear the interrupt
195  #else
196  NVIC_DisableIRQ(HK_IRQ2);
197  __enable_irq();
198  #endif
199  }
200 }
207 void IRQ_enableTimer(bool is_enable){
208  if (is_enable){
209  #ifndef ARM
210  irq_setmask(0);
211  irq_setie(1);
212  irq_setmask(irq_getmask() | (1 << TIMER0_INTERRUPT));
213  reg_timer0_irq_en = 1;
214  #else
215  NVIC_EnableIRQ(TMR0_IRQn);
216  reg_timer0_config = reg_timer0_config | 0x8; // enable irq
217  __enable_irq();
218  #endif
219  }else{
220  #ifndef ARM
221  irq_setmask(0);
222  irq_setie(1);
223  irq_setmask(irq_getmask() & ~(1 << TIMER0_INTERRUPT));
224  reg_timer0_irq_en = 0;
225  timer0_ev_pending_zero_write(1); // to clear the interrupt
226  #else
227  NVIC_DisableIRQ(TMR0_IRQn);
228  reg_timer0_config = reg_timer0_config | 0x8; // enable irq
229  __enable_irq();
230  #endif
231  }
232 }
239 void IRQ_enableUartTx(bool is_enable){
240  if (is_enable){
241  #ifndef ARM
242  reg_uart_enable = 1;
243  reg_uart_irq_en =1;
244  irq_setmask(0);
245  irq_setie(1);
246  irq_setmask(irq_getmask() | (1 << UART_INTERRUPT));
247  #else
248  NVIC_EnableIRQ(UART0_IRQn);
249  reg_uart_ctrl = reg_uart_ctrl | 0x5; // enable irq TX
250  __enable_irq();
251  #endif
252  }else{
253  #ifndef ARM
254  reg_uart_irq_en =0;
255  irq_setmask(0);
256  irq_setie(1);
257  irq_setmask(irq_getmask() & ~(1 << UART_INTERRUPT));
258  uart_ev_pending_tx_write(1); // to clear the interrupt
259  #else
260  NVIC_DisableIRQ(UART0_IRQn);
261  reg_uart_ctrl = reg_uart_ctrl | 0x5; // enable irq TX
262  __enable_irq();
263  #endif
264  }
265 }
272 void IRQ_enableUartRx(bool is_enable){
273  if (is_enable){
274  #ifndef ARM
275  reg_uart_enable = 1;
276  reg_uart_irq_en =1;
277  irq_setmask(0);
278  irq_setie(1);
279  irq_setmask(irq_getmask() | (1 << UART_INTERRUPT));
280  #else
281  NVIC_EnableIRQ(UART0_IRQn);
282  reg_uart_ctrl = reg_uart_ctrl | 0xA; // enable irq rx
283  __enable_irq();
284  #endif
285  }else{
286  #ifndef ARM
287  reg_uart_enable = 1;
288  reg_uart_irq_en =1;
289  irq_setmask(0);
290  irq_setie(1);
291  irq_setmask(irq_getmask() & ~(1 << UART_INTERRUPT));
292  uart_ev_pending_rx_write(1); // to clear the interrupt
293  #else
294  reg_uart_ctrl = reg_uart_ctrl & 0xF7; // enable irq rx
295  __enable_irq();
296  #endif
297  }
298 }
305 void IRQ_hkSpi(bool is_enable){
306  if (is_enable){
307  #ifndef ARM
308  reg_user3_irq_en =1;
309  irq_setmask(0);
310  irq_setie(1);
311  irq_setmask(irq_getmask() | (1 << USER_IRQ_3_INTERRUPT));
312  #else
313  NVIC_EnableIRQ(HK_IRQ0);
314  __enable_irq();
315  #endif
316  }else{
317  #ifndef ARM
318  irq_setmask(0);
319  irq_setie(1);
320  irq_setmask(irq_getmask() & ~(1 << USER_IRQ_3_INTERRUPT));
321  reg_user3_irq_en =0;
322  user_irq_3_ev_pending_i0_write(1); // to clear the interrupt
323  #else
324  NVIC_DisableIRQ(HK_IRQ0);
325  __enable_irq();
326  #endif
327  }
328 }
329 
330 #endif // IRQ_API_C_HEADER_FILE
void IRQ_enableUser1(bool is_enable)
Definition: irq_api.h:142
void IRQ_enableExternal1(bool is_enable)
Definition: irq_api.h:49
void IRQ_enableUser2(bool is_enable)
Definition: irq_api.h:175
void IRQ_enableUartRx(bool is_enable)
Definition: irq_api.h:272
void dummyDelay(int num)
Definition: common.h:115
void IRQ_enableExternal2(bool is_enable)
Definition: irq_api.h:80
void IRQ_enableTimer(bool is_enable)
Definition: irq_api.h:207
void IRQ_hkSpi(bool is_enable)
Definition: irq_api.h:305
void IRQ_enableUartTx(bool is_enable)
Definition: irq_api.h:239
void IRQ_enableUser0(bool is_enable)
Definition: irq_api.h:110