1 /******************************************************************************
2 * Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
3 *
4 * This software is owned and published by:
5 * Huada Semiconductor Co.,Ltd ("HDSC").
6 *
7 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
8 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
9 *
10 * This software contains source code for use with HDSC
11 * components. This software is licensed by HDSC to be adapted only
12 * for use in systems utilizing HDSC components. HDSC shall not be
13 * responsible for misuse or illegal use of this software for devices not
14 * supported herein. HDSC is providing this software "AS IS" and will
15 * not be responsible for issues arising from incorrect user implementation
16 * of the software.
17 *
18 * Disclaimer:
19 * HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
20 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
21 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
22 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
23 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
24 * WARRANTY OF NONINFRINGEMENT.
25 * HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
26 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
27 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
28 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
29 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
30 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
31 * SAVINGS OR PROFITS,
32 * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
33 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
34 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
35 * FROM, THE SOFTWARE.
36 *
37 * This software may be replicated in part or whole for the licensed use,
38 * with the restriction that this Disclaimer and Copyright notice must be
39 * included with each copy of this software, whether used in part or whole,
40 * at all times.
41 */
42 /******************************************************************************/
43 /** \file interrupts_hc32l136.c
44  **
45  ** Interrupt management
46  ** @link Driver Group Some description @endlink
47  **
48  **   - 2018-04-15  1.0  Lux     First version.
49  **
50  **
51  ******************************************************************************/
52 
53 /*******************************************************************************
54  * Include files
55  ******************************************************************************/
56 #include "ddl.h"
57 #include "interrupts_hc32l136.h"
58 void Gpio_IRQHandler(uint8_t u8Param);
59 __WEAKDEF void Dma_IRQHandler(uint8_t u8Param);
60 void Uart_IRQHandler(uint8_t u8Param);
61 __WEAKDEF void LpUart_IRQHandler(uint8_t u8Param);
62 __WEAKDEF void Spi_IRQHandler(uint8_t u8Param);
63 __WEAKDEF void I2c_IRQHandler(uint8_t u8Param);
64 __WEAKDEF void Tim_IRQHandler(uint8_t u8Param);
65 __WEAKDEF void Tim3_IRQHandler(uint8_t u8Param);
66 __WEAKDEF void Adt_IRQHandler(uint8_t u8Param);
67 __WEAKDEF void LpTim_IRQHandler(uint8_t u8Param);
68 __WEAKDEF void Pca_IRQHandler(uint8_t u8Param);
69 __WEAKDEF void Wdt_IRQHandler(uint8_t u8Param);
70 __WEAKDEF void Vc_IRQHandler(uint8_t u8Param);
71 __WEAKDEF void Rtc_IRQHandler(uint8_t u8Param);
72 __WEAKDEF void Adc_IRQHandler(uint8_t u8Param);
73 __WEAKDEF void Pcnt_IRQHandler(uint8_t u8Param);
74 __WEAKDEF void Lvd_IRQHandler(uint8_t u8Param);
75 __WEAKDEF void Lcd_IRQHandler(uint8_t u8Param);
76 __WEAKDEF void EfRam_IRQHandler(uint8_t u8Param);
77 __WEAKDEF void ClkTrim_IRQHandler(uint8_t u8Param);
78 
79 /**
80  *******************************************************************************
81  ** \brief NVIC 中断使能
82  **
83  ** \param [in]  enIrq          中断号枚举类型
84  ** \param [in]  enLevel        中断优先级枚举类型
85  ** \param [in]  bEn            中断开关
86  ** \retval    Ok       设置成功
87  **            其他值   设置失败
88  ******************************************************************************/
EnableNvic(IRQn_Type enIrq,en_irq_level_t enLevel,boolean_t bEn)89 void EnableNvic(IRQn_Type enIrq, en_irq_level_t enLevel, boolean_t bEn)
90 {
91     NVIC_ClearPendingIRQ(enIrq);
92     NVIC_SetPriority(enIrq, enLevel);
93     if (TRUE == bEn)
94     {
95         NVIC_EnableIRQ(enIrq);
96     }
97     else
98     {
99         NVIC_DisableIRQ(enIrq);
100     }
101 }
102 
103 /**
104  *******************************************************************************
105  ** \brief NVIC hardware fault 中断实现
106  **        用于单步调试功能
107  **
108  ** \retval
109  ******************************************************************************/
110 //void HardFault_Handler(void)
111 //{
112 //    volatile int a = 0;
113 
114 //    while( 0 == a)
115 //    {
116 //        ;
117 //    }
118 //}
119 
120 /**
121  *******************************************************************************
122  ** \brief GPIO PortA 中断处理函数
123  **
124  ** \retval
125  ******************************************************************************/
PORTA_IRQHandler(void)126 void PORTA_IRQHandler(void)
127 {
128     Gpio_IRQHandler(0);
129 }
130 
131 /**
132  *******************************************************************************
133  ** \brief GPIO PortB 中断处理函数
134  **
135  ** \retval
136  ******************************************************************************/
PORTB_IRQHandler(void)137 void PORTB_IRQHandler(void)
138 {
139     Gpio_IRQHandler(1);
140 }
141 
142 /**
143  *******************************************************************************
144  ** \brief GPIO PortC 中断处理函数
145  **
146  ** \retval
147  ******************************************************************************/
PORTC_IRQHandler(void)148 void PORTC_IRQHandler(void)
149 {
150     Gpio_IRQHandler(2);
151 }
152 
153 /**
154  *******************************************************************************
155  ** \brief GPIO PortD 中断处理函数
156  **
157  ** \retval
158  ******************************************************************************/
PORTD_IRQHandler(void)159 void PORTD_IRQHandler(void)
160 {
161     Gpio_IRQHandler(3);
162 }
163 
164 /**
165  *******************************************************************************
166  ** \brief DMAC  中断处理函数
167  **
168  ** \retval
169  ******************************************************************************/
DMAC_IRQHandler(void)170 void DMAC_IRQHandler(void)
171 {
172     Dma_IRQHandler(0);
173 }
174 
175 
176 /**
177  *******************************************************************************
178  ** \brief UART0 串口0 中断处理函数
179  **
180  ** \retval
181  ******************************************************************************/
UART0_IRQHandler(void)182 void UART0_IRQHandler(void)
183 {
184     Uart_IRQHandler(0);
185 }
186 
187 /**
188  *******************************************************************************
189  ** \brief UART1 串口1 中断处理函数
190  **
191  ** \retval
192  ******************************************************************************/
UART1_IRQHandler(void)193 void UART1_IRQHandler(void)
194 {
195     Uart_IRQHandler(1);
196 }
197 
198 /**
199  *******************************************************************************
200  ** \brief LPUART0 低功耗串口0 中断处理函数
201  **
202  ** \retval
203  ******************************************************************************/
LPUART0_IRQHandler(void)204 void LPUART0_IRQHandler(void)
205 {
206     LpUart_IRQHandler(0);
207 }
208 
209 /**
210  *******************************************************************************
211  ** \brief LPUART1 低功耗串口1 中断处理函数
212  **
213  ** \retval
214  ******************************************************************************/
LPUART1_IRQHandler(void)215 void LPUART1_IRQHandler(void)
216 {
217     LpUart_IRQHandler(1);
218 }
219 
220 /**
221  *******************************************************************************
222  ** \brief SPI0 中断处理函数
223  **
224  ** \retval
225  ******************************************************************************/
SPI0_IRQHandler(void)226 void SPI0_IRQHandler(void)
227 {
228     Spi_IRQHandler(0);
229 }
230 
231 /**
232  *******************************************************************************
233  ** \brief SPI1 中断处理函数
234  **
235  ** \retval
236  ******************************************************************************/
SPI1_IRQHandler(void)237 void SPI1_IRQHandler(void)
238 {
239     Spi_IRQHandler(1);
240 }
241 
242 /**
243  *******************************************************************************
244  ** \brief I2C0 中断处理函数
245  **
246  ** \retval
247  ******************************************************************************/
I2C0_IRQHandler(void)248 void I2C0_IRQHandler(void)
249 {
250     I2c_IRQHandler(0);
251 }
252 
253 /**
254  *******************************************************************************
255  ** \brief I2C1 中断处理函数
256  **
257  ** \retval
258  ******************************************************************************/
I2C1_IRQHandler(void)259 void I2C1_IRQHandler(void)
260 {
261     I2c_IRQHandler(1);
262 }
263 
264 /**
265  *******************************************************************************
266  ** \brief TIM0 基础时钟0 中断处理函数
267  **
268  ** \retval
269  ******************************************************************************/
TIM0_IRQHandler(void)270 void TIM0_IRQHandler(void)
271 {
272     Tim_IRQHandler(0);
273 }
274 
275 /**
276  *******************************************************************************
277  ** \brief TIM1 基础时钟1 中断处理函数
278  **
279  ** \retval
280  ******************************************************************************/
TIM1_IRQHandler(void)281 void TIM1_IRQHandler(void)
282 {
283     Tim_IRQHandler(1);
284 }
285 
286 /**
287  *******************************************************************************
288  ** \brief TIM2 基础时钟2 中断处理函数
289  **
290  ** \retval
291  ******************************************************************************/
TIM2_IRQHandler(void)292 void TIM2_IRQHandler(void)
293 {
294     Tim_IRQHandler(2);
295 }
296 
297 /**
298  *******************************************************************************
299  ** \brief TIM3 基础时钟3 中断处理函数
300  **
301  ** \retval
302  ******************************************************************************/
TIM3_IRQHandler(void)303 void TIM3_IRQHandler(void)
304 {
305     Tim3_IRQHandler(0);
306 }
307 
308 /**
309  *******************************************************************************
310  ** \brief LPTIM 低功耗时钟 中断处理函数
311  **
312  ** \retval
313  ******************************************************************************/
LPTIM_IRQHandler(void)314 void LPTIM_IRQHandler(void)
315 {
316     LpTim_IRQHandler(0);
317 }
318 
319 /**
320  *******************************************************************************
321  ** \brief TIM4 高级时钟4 中断处理函数
322  **
323  ** \retval
324  ******************************************************************************/
TIM4_IRQHandler(void)325 void TIM4_IRQHandler(void)
326 {
327     Adt_IRQHandler(4);
328 }
329 
330 /**
331  *******************************************************************************
332  ** \brief TIM5 高级时钟5 中断处理函数
333  **
334  ** \retval
335  ******************************************************************************/
TIM5_IRQHandler(void)336 void TIM5_IRQHandler(void)
337 {
338     Adt_IRQHandler(5);
339 }
340 
341 /**
342  *******************************************************************************
343  ** \brief TIM6 高级时钟6 中断处理函数
344  **
345  ** \retval
346  ******************************************************************************/
TIM6_IRQHandler(void)347 void TIM6_IRQHandler(void)
348 {
349     Adt_IRQHandler(6);
350 }
351 
352 /**
353  *******************************************************************************
354  ** \brief PCA 中断处理函数
355  **
356  ** \retval
357  ******************************************************************************/
PCA_IRQHandler(void)358 void PCA_IRQHandler(void)
359 {
360     Pca_IRQHandler(0);
361 }
362 
363 /**
364  *******************************************************************************
365  ** \brief WDT 中断处理函数
366  **
367  ** \retval
368  ******************************************************************************/
WDT_IRQHandler(void)369 void WDT_IRQHandler(void)
370 {
371     Wdt_IRQHandler(0);
372 }
373 
374 /**
375  *******************************************************************************
376  ** \brief RTC 中断处理函数
377  **
378  ** \retval
379  ******************************************************************************/
RTC_IRQHandler(void)380 void RTC_IRQHandler(void)
381 {
382     Rtc_IRQHandler(0);
383 }
384 
385 /**
386  *******************************************************************************
387  ** \brief ADC 中断处理函数
388  **
389  ** \retval
390  ******************************************************************************/
ADC_IRQHandler(void)391 void ADC_IRQHandler(void)
392 {
393     Adc_IRQHandler(0);
394 }
395 
396 /**
397  *******************************************************************************
398  ** \brief PCNT 中断处理函数
399  **
400  ** \retval
401  ******************************************************************************/
PCNT_IRQHandler(void)402 void PCNT_IRQHandler(void)
403 {
404     Pcnt_IRQHandler(0);
405 }
406 
407 /**
408  *******************************************************************************
409  ** \brief 电压比较0 中断处理函数
410  **
411  ** \retval
412  ******************************************************************************/
VC0_IRQHandler(void)413 void VC0_IRQHandler(void)
414 {
415     Vc_IRQHandler(0);
416 }
417 
418 /**
419  *******************************************************************************
420  ** \brief 电压比较1 中断处理函数
421  **
422  ** \retval
423  ******************************************************************************/
VC1_IRQHandler(void)424 void VC1_IRQHandler(void)
425 {
426     Vc_IRQHandler(1);
427 }
428 
429 /**
430  *******************************************************************************
431  ** \brief 低电压检测 中断处理函数
432  **
433  ** \retval
434  ******************************************************************************/
LVD_IRQHandler(void)435 void LVD_IRQHandler(void)
436 {
437     Lvd_IRQHandler(0);
438 }
439 
440 /**
441  *******************************************************************************
442  ** \brief LCD 中断处理函数
443  **
444  ** \retval
445  ******************************************************************************/
LCD_IRQHandler(void)446 void LCD_IRQHandler(void)
447 {
448     Lcd_IRQHandler(0);
449 }
450 
451 /**
452  *******************************************************************************
453  ** \brief RAM 中断处理函数
454  **
455  ** \retval
456  ******************************************************************************/
EF_RAM_IRQHandler(void)457 void EF_RAM_IRQHandler(void)
458 {
459     EfRam_IRQHandler(0);
460 }
461 
462 /**
463  *******************************************************************************
464  ** \brief 时钟校准 中断处理函数
465  **
466  ** \retval
467  ******************************************************************************/
CLKTRIM_IRQHandler(void)468 void CLKTRIM_IRQHandler(void)
469 {
470     ClkTrim_IRQHandler(0);
471 }
472 
473 
474 
475 /******************************************************************************/
476 /* EOF (not truncated)                                                        */
477 /******************************************************************************/
478