A31R71x F/W Packages  1.5.0
ABOV Cortex-M0+ Core based MCUs Integrated Driver
A31R71x_hal_intc.c
Go to the documentation of this file.
1 /***************************************************************************//****************************************************************************/
34 
35 /* Includes ----------------------------------------------------------------- */
36 //******************************************************************************
37 // Include
38 //******************************************************************************
39 
40 #include "A31R71x_hal_intc.h"
41 
42 /* Public Functions --------------------------------------------------------- */
43 //******************************************************************************
44 // Function
45 //******************************************************************************
46 
47 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
82 void HAL_INT_EIntPx_SetReg( uint32_t u32Px, uint32_t u32pin, uint32_t u32Trig, uint32_t u32Con )
83 {
84  uint32_t temp_reg;
85 
86 #ifdef PORTA
87  if( u32Px == PORTA )
88  {
89  temp_reg = INTC->PATRIG;
90  temp_reg &= ~( 1 << u32pin );
91  temp_reg |= ( u32Trig << u32pin );
92  INTC->PATRIG = temp_reg;
93 
94  temp_reg = INTC->PACR;
95  temp_reg &= ~( 3 << ( u32pin << 1 ) );
96  temp_reg |= ( u32Con << ( u32pin << 1 ) );
97  INTC->PACR = temp_reg;
98  }
99 #endif
100 
101 #ifdef PORTB
102  if( u32Px == PORTB )
103  {
104  temp_reg = INTC->PBTRIG;
105  temp_reg &= ~( 1 << u32pin );
106  temp_reg |= ( u32Trig << u32pin );
107  INTC->PBTRIG = temp_reg;
108 
109  temp_reg = INTC->PBCR;
110  temp_reg &= ~( 3 << ( u32pin << 1 ) );
111  temp_reg |= ( u32Con << ( u32pin << 1 ) );
112  INTC->PBCR = temp_reg;
113  }
114 #endif
115 
116 #ifdef PORTC
117  if( u32Px == PORTC )
118  {
119  temp_reg = INTC->PCTRIG;
120  temp_reg &= ~( 1 << u32pin );
121  temp_reg |= ( u32Trig << u32pin );
122  INTC->PCTRIG = temp_reg;
123 
124  temp_reg = INTC->PCCR;
125  temp_reg &= ~( 3 << ( u32pin << 1 ) );
126  temp_reg |= ( u32Con << ( u32pin << 1 ) );
127  INTC->PCCR = temp_reg;
128  }
129 #endif
130 
131 #ifdef PORTD
132  if( u32Px == PORTD )
133  {
134  temp_reg = INTC->PDTRIG;
135  temp_reg &= ~( 1 << u32pin );
136  temp_reg |= ( u32Trig << u32pin );
137  INTC->PDTRIG = temp_reg;
138 
139  temp_reg = INTC->PDCR;
140  temp_reg &= ~( 3 << ( u32pin << 1 ) );
141  temp_reg |= ( u32Con << ( u32pin << 1 ) );
142  INTC->PDCR = temp_reg;
143  }
144 #endif
145 
146 #ifdef PORTE
147  if( u32Px == PORTE )
148  {
149  temp_reg = INTC->PETRIG;
150  temp_reg &= ~( 1 << u32pin );
151  temp_reg |= ( u32Trig << u32pin );
152  INTC->PETRIG = temp_reg;
153 
154  temp_reg = INTC->PECR;
155  temp_reg &= ~( 3 << ( u32pin << 1 ) );
156  temp_reg |= ( u32Con << ( u32pin << 1 ) );
157  INTC->PECR = temp_reg;
158  }
159 #endif
160 
161 #ifdef PORTF
162  if( u32Px == PORTF )
163  {
164  temp_reg = INTC->PFTRIG;
165  temp_reg &= ~( 1 << u32pin );
166  temp_reg |= ( u32Trig << u32pin );
167  INTC->PFTRIG = temp_reg;
168 
169  temp_reg = INTC->PFCR;
170  temp_reg &= ~( 3 << ( u32pin << 1 ) );
171  temp_reg |= ( u32Con << ( u32pin << 1 ) );
172  INTC->PFCR = temp_reg;
173  }
174 #endif
175 }
176 
177 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
193 void HAL_INT_EIntCfg( uint32_t u32TarIntNum, uint32_t u32SrcPort, uint32_t u32SrcPin )
194 {
195  uint32_t temp_reg;
196 
197  if( u32SrcPin < 8 )
198  {
199  if( u32TarIntNum == EINT0 )
200  {
201  temp_reg = INTC->EINT0CONF1;
202  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
203  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
204  INTC->EINT0CONF1 = temp_reg;
205  }
206  else if( u32TarIntNum == EINT1 )
207  {
208  temp_reg = INTC->EINT1CONF1;
209  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
210  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
211  INTC->EINT1CONF1 = temp_reg;
212  }
213  else if( u32TarIntNum == EINT2 )
214  {
215  temp_reg = INTC->EINT2CONF1;
216  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
217  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
218  INTC->EINT2CONF1 = temp_reg;
219  }
220  else if( u32TarIntNum == EINT3 )
221  {
222  temp_reg = INTC->EINT3CONF1;
223  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
224  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
225  INTC->EINT3CONF1 = temp_reg;
226  }
227  }
228 #if 1
229  else
230  {
231  u32SrcPin -= 8;
232  if( u32TarIntNum == EINT0 )
233  {
234  temp_reg = INTC->EINT0CONF2;
235  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
236  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
237  INTC->EINT0CONF2 = temp_reg;
238  }
239  else if( u32TarIntNum == EINT1 )
240  {
241  temp_reg = INTC->EINT1CONF2;
242  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
243  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
244  INTC->EINT1CONF2 = temp_reg;
245  }
246  else if( u32TarIntNum == EINT2 )
247  {
248  temp_reg = INTC->EINT2CONF2;
249  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
250  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
251  INTC->EINT2CONF2 = temp_reg;
252  }
253  else if( u32TarIntNum == EINT3 )
254  {
255  temp_reg = INTC->EINT3CONF2;
256  temp_reg &= ~( 0x0F << ( u32SrcPin * 4 ) );
257  temp_reg |= ( u32SrcPort << ( u32SrcPin * 4 ) );
258  INTC->EINT3CONF2 = temp_reg;
259  }
260  }
261 #endif
262 }
263 
264 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
277 void HAL_INT_EInt_MaskEnable( uint32_t u32Src )
278 {
279  INTC->MSK &= ~u32Src;
280 }
281 
282 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
295 void HAL_INT_EInt_MaskDisable( uint32_t u32Src )
296 {
297  INTC->MSK |= u32Src;
298 }
299 
300 #ifdef PORTA
301 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
309 void HAL_INT_EIntPA_ClearIntStatus( uint32_t u32Value )
310 {
311  INTC->PAFLAG = u32Value;
312 }
313 #endif
314 
315 #ifdef PORTB
316 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
324 void HAL_INT_EIntPB_ClearIntStatus( uint32_t u32Value )
325 {
326  INTC->PBFLAG = u32Value;
327 }
328 #endif
329 
330 #ifdef PORTC
331 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
339 void HAL_INT_EIntPC_ClearIntStatus( uint32_t u32Value )
340 {
341  INTC->PCFLAG = u32Value;
342 }
343 #endif
344 
345 #ifdef PORTD
346 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
354 void HAL_INT_EIntPD_ClearIntStatus( uint32_t u32Value )
355 {
356  INTC->PDFLAG = u32Value;
357 }
358 #endif
359 
360 #ifdef PORTE
361 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
369 void HAL_INT_EIntPE_ClearIntStatus( uint32_t u32Value )
370 {
371  INTC->PEFLAG = u32Value;
372 }
373 #endif
374 
375 #ifdef PORTF
376 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
384 void HAL_INT_EIntPF_ClearIntStatus( uint32_t u32Value )
385 {
386  INTC->PFFLAG = u32Value;
387 }
388 #endif
389 
390 #ifdef PORTA
391 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
397 {
398  return INTC->PAFLAG;
399 }
400 #endif
401 
402 #ifdef PORTB
403 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
409 {
410  return INTC->PBFLAG;
411 }
412 #endif
413 
414 #ifdef PORTC
415 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
421 {
422  return INTC->PCFLAG;
423 }
424 #endif
425 
426 #ifdef PORTD
427 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
433 {
434  return INTC->PDFLAG;
435 }
436 #endif
437 
438 #ifdef PORTE
439 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
445 {
446  return INTC->PEFLAG;
447 }
448 #endif
449 
450 #ifdef PORTF
451 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
457 {
458  return INTC->PFFLAG;
459 }
460 #endif
461 
void HAL_INT_EInt_MaskEnable(uint32_t u32Src)
Enable Interrupt Source Mask.
uint32_t HAL_INT_EIntPD_GetIntStatus(void)
Get PD Interrupt Flag.
void HAL_INT_EIntPB_ClearIntStatus(uint32_t u32Value)
Clear PB Interrupt Flag.
void HAL_INT_EIntPA_ClearIntStatus(uint32_t u32Value)
Clear PA Interrupt Flag.
void HAL_INT_EIntPF_ClearIntStatus(uint32_t u32Value)
Clear PF Interrupt Flag.
void HAL_INT_EIntPC_ClearIntStatus(uint32_t u32Value)
Clear PC Interrupt Flag.
Contains all macro definitions and function prototypes support for intc firmware library on A31R71x.
uint32_t HAL_INT_EIntPB_GetIntStatus(void)
Get PB Interrupt Flag.
void HAL_INT_EInt_MaskDisable(uint32_t u32Src)
Disable Interrupt Source Mask.
uint32_t HAL_INT_EIntPE_GetIntStatus(void)
Get PE Interrupt Flag.
uint32_t HAL_INT_EIntPA_GetIntStatus(void)
Get PA Interrupt Flag.
uint32_t HAL_INT_EIntPF_GetIntStatus(void)
Get PF Interrupt Flag.
void HAL_INT_EIntPD_ClearIntStatus(uint32_t u32Value)
Clear PD Interrupt Flag.
uint32_t HAL_INT_EIntPC_GetIntStatus(void)
Get PC Interrupt Flag.
void HAL_INT_EIntPx_SetReg(uint32_t u32Px, uint32_t u32pin, uint32_t u32Trig, uint32_t u32Con)
Configure External Interrupt Trigger.
void HAL_INT_EIntPE_ClearIntStatus(uint32_t u32Value)
Clear PE Interrupt Flag.
void HAL_INT_EIntCfg(uint32_t u32TarIntNum, uint32_t u32SrcPort, uint32_t u32SrcPin)
Configure External Interrupt Group.