rt-thread/bsp/hc32l136/Libraries/HC32L136_StdPeriph_Driver/src/interrupts_hc32l136.c

478 lines
14 KiB
C

/******************************************************************************
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
*
* This software is owned and published by:
* Huada Semiconductor Co.,Ltd ("HDSC").
*
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
*
* This software contains source code for use with HDSC
* components. This software is licensed by HDSC to be adapted only
* for use in systems utilizing HDSC components. HDSC shall not be
* responsible for misuse or illegal use of this software for devices not
* supported herein. HDSC is providing this software "AS IS" and will
* not be responsible for issues arising from incorrect user implementation
* of the software.
*
* Disclaimer:
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
* WARRANTY OF NONINFRINGEMENT.
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
* SAVINGS OR PROFITS,
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
* FROM, THE SOFTWARE.
*
* This software may be replicated in part or whole for the licensed use,
* with the restriction that this Disclaimer and Copyright notice must be
* included with each copy of this software, whether used in part or whole,
* at all times.
*/
/******************************************************************************/
/** \file interrupts_hc32l136.c
**
** Interrupt management
** @link Driver Group Some description @endlink
**
** - 2018-04-15 1.0 Lux First version.
**
**
******************************************************************************/
/*******************************************************************************
* Include files
******************************************************************************/
#include "ddl.h"
#include "interrupts_hc32l136.h"
__WEAKDEF void Gpio_IRQHandler(uint8_t u8Param);
__WEAKDEF void Dma_IRQHandler(uint8_t u8Param);
__WEAKDEF void Uart_IRQHandler(uint8_t u8Param);
__WEAKDEF void LpUart_IRQHandler(uint8_t u8Param);
__WEAKDEF void Spi_IRQHandler(uint8_t u8Param);
__WEAKDEF void I2c_IRQHandler(uint8_t u8Param);
__WEAKDEF void Tim_IRQHandler(uint8_t u8Param);
__WEAKDEF void Tim3_IRQHandler(uint8_t u8Param);
__WEAKDEF void Adt_IRQHandler(uint8_t u8Param);
__WEAKDEF void LpTim_IRQHandler(uint8_t u8Param);
__WEAKDEF void Pca_IRQHandler(uint8_t u8Param);
__WEAKDEF void Wdt_IRQHandler(uint8_t u8Param);
__WEAKDEF void Vc_IRQHandler(uint8_t u8Param);
__WEAKDEF void Rtc_IRQHandler(uint8_t u8Param);
__WEAKDEF void Adc_IRQHandler(uint8_t u8Param);
__WEAKDEF void Pcnt_IRQHandler(uint8_t u8Param);
__WEAKDEF void Lvd_IRQHandler(uint8_t u8Param);
__WEAKDEF void Lcd_IRQHandler(uint8_t u8Param);
__WEAKDEF void EfRam_IRQHandler(uint8_t u8Param);
__WEAKDEF void ClkTrim_IRQHandler(uint8_t u8Param);
/**
*******************************************************************************
** \brief NVIC 中断使能
**
** \param [in] enIrq 中断号枚举类型
** \param [in] enLevel 中断优先级枚举类型
** \param [in] bEn 中断开关
** \retval Ok 设置成功
** 其他值 设置失败
******************************************************************************/
void EnableNvic(IRQn_Type enIrq, en_irq_level_t enLevel, boolean_t bEn)
{
NVIC_ClearPendingIRQ(enIrq);
NVIC_SetPriority(enIrq, enLevel);
if (TRUE == bEn)
{
NVIC_EnableIRQ(enIrq);
}
else
{
NVIC_DisableIRQ(enIrq);
}
}
/**
*******************************************************************************
** \brief NVIC hardware fault 中断实现
** 用于单步调试功能
**
** \retval
******************************************************************************/
void HardFault_Handler(void)
{
volatile int a = 0;
while( 0 == a)
{
;
}
}
/**
*******************************************************************************
** \brief GPIO PortA 中断处理函数
**
** \retval
******************************************************************************/
void PORTA_IRQHandler(void)
{
Gpio_IRQHandler(0);
}
/**
*******************************************************************************
** \brief GPIO PortB 中断处理函数
**
** \retval
******************************************************************************/
void PORTB_IRQHandler(void)
{
Gpio_IRQHandler(1);
}
/**
*******************************************************************************
** \brief GPIO PortC 中断处理函数
**
** \retval
******************************************************************************/
void PORTC_IRQHandler(void)
{
Gpio_IRQHandler(2);
}
/**
*******************************************************************************
** \brief GPIO PortD 中断处理函数
**
** \retval
******************************************************************************/
void PORTD_IRQHandler(void)
{
Gpio_IRQHandler(3);
}
/**
*******************************************************************************
** \brief DMAC 中断处理函数
**
** \retval
******************************************************************************/
void DMAC_IRQHandler(void)
{
Dma_IRQHandler(0);
}
/**
*******************************************************************************
** \brief UART0 串口0 中断处理函数
**
** \retval
******************************************************************************/
void UART0_IRQHandler(void)
{
Uart_IRQHandler(0);
}
/**
*******************************************************************************
** \brief UART1 串口1 中断处理函数
**
** \retval
******************************************************************************/
void UART1_IRQHandler(void)
{
Uart_IRQHandler(1);
}
/**
*******************************************************************************
** \brief LPUART0 低功耗串口0 中断处理函数
**
** \retval
******************************************************************************/
void LPUART0_IRQHandler(void)
{
LpUart_IRQHandler(0);
}
/**
*******************************************************************************
** \brief LPUART1 低功耗串口1 中断处理函数
**
** \retval
******************************************************************************/
void LPUART1_IRQHandler(void)
{
LpUart_IRQHandler(1);
}
/**
*******************************************************************************
** \brief SPI0 中断处理函数
**
** \retval
******************************************************************************/
void SPI0_IRQHandler(void)
{
Spi_IRQHandler(0);
}
/**
*******************************************************************************
** \brief SPI1 中断处理函数
**
** \retval
******************************************************************************/
void SPI1_IRQHandler(void)
{
Spi_IRQHandler(1);
}
/**
*******************************************************************************
** \brief I2C0 中断处理函数
**
** \retval
******************************************************************************/
void I2C0_IRQHandler(void)
{
I2c_IRQHandler(0);
}
/**
*******************************************************************************
** \brief I2C1 中断处理函数
**
** \retval
******************************************************************************/
void I2C1_IRQHandler(void)
{
I2c_IRQHandler(1);
}
/**
*******************************************************************************
** \brief TIM0 基础时钟0 中断处理函数
**
** \retval
******************************************************************************/
void TIM0_IRQHandler(void)
{
Tim_IRQHandler(0);
}
/**
*******************************************************************************
** \brief TIM1 基础时钟1 中断处理函数
**
** \retval
******************************************************************************/
void TIM1_IRQHandler(void)
{
Tim_IRQHandler(1);
}
/**
*******************************************************************************
** \brief TIM2 基础时钟2 中断处理函数
**
** \retval
******************************************************************************/
void TIM2_IRQHandler(void)
{
Tim_IRQHandler(2);
}
/**
*******************************************************************************
** \brief TIM3 基础时钟3 中断处理函数
**
** \retval
******************************************************************************/
void TIM3_IRQHandler(void)
{
Tim3_IRQHandler(0);
}
/**
*******************************************************************************
** \brief LPTIM 低功耗时钟 中断处理函数
**
** \retval
******************************************************************************/
void LPTIM_IRQHandler(void)
{
LpTim_IRQHandler(0);
}
/**
*******************************************************************************
** \brief TIM4 高级时钟4 中断处理函数
**
** \retval
******************************************************************************/
void TIM4_IRQHandler(void)
{
Adt_IRQHandler(4);
}
/**
*******************************************************************************
** \brief TIM5 高级时钟5 中断处理函数
**
** \retval
******************************************************************************/
void TIM5_IRQHandler(void)
{
Adt_IRQHandler(5);
}
/**
*******************************************************************************
** \brief TIM6 高级时钟6 中断处理函数
**
** \retval
******************************************************************************/
void TIM6_IRQHandler(void)
{
Adt_IRQHandler(6);
}
/**
*******************************************************************************
** \brief PCA 中断处理函数
**
** \retval
******************************************************************************/
void PCA_IRQHandler(void)
{
Pca_IRQHandler(0);
}
/**
*******************************************************************************
** \brief WDT 中断处理函数
**
** \retval
******************************************************************************/
void WDT_IRQHandler(void)
{
Wdt_IRQHandler(0);
}
/**
*******************************************************************************
** \brief RTC 中断处理函数
**
** \retval
******************************************************************************/
void RTC_IRQHandler(void)
{
Rtc_IRQHandler(0);
}
/**
*******************************************************************************
** \brief ADC 中断处理函数
**
** \retval
******************************************************************************/
void ADC_IRQHandler(void)
{
Adc_IRQHandler(0);
}
/**
*******************************************************************************
** \brief PCNT 中断处理函数
**
** \retval
******************************************************************************/
void PCNT_IRQHandler(void)
{
Pcnt_IRQHandler(0);
}
/**
*******************************************************************************
** \brief 电压比较0 中断处理函数
**
** \retval
******************************************************************************/
void VC0_IRQHandler(void)
{
Vc_IRQHandler(0);
}
/**
*******************************************************************************
** \brief 电压比较1 中断处理函数
**
** \retval
******************************************************************************/
void VC1_IRQHandler(void)
{
Vc_IRQHandler(1);
}
/**
*******************************************************************************
** \brief 低电压检测 中断处理函数
**
** \retval
******************************************************************************/
void LVD_IRQHandler(void)
{
Lvd_IRQHandler(0);
}
/**
*******************************************************************************
** \brief LCD 中断处理函数
**
** \retval
******************************************************************************/
void LCD_IRQHandler(void)
{
Lcd_IRQHandler(0);
}
/**
*******************************************************************************
** \brief RAM 中断处理函数
**
** \retval
******************************************************************************/
void EF_RAM_IRQHandler(void)
{
EfRam_IRQHandler(0);
}
/**
*******************************************************************************
** \brief 时钟校准 中断处理函数
**
** \retval
******************************************************************************/
void CLKTRIM_IRQHandler(void)
{
ClkTrim_IRQHandler(0);
}
/******************************************************************************/
/* EOF (not truncated) */
/******************************************************************************/