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