Files
RCU_BUS485_PLC_MASTER/Source/mcu_interrupt.c
yanghongfeng f25132cbe3 修复开关控制组控的控制异常问题
修改PB开关状态组控处理,解决后32路的开关状态会复用上前32个回路的数据
2026-01-19 15:35:56 +08:00

971 lines
24 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "includes.h"
/****************************************************
//define
*****************************************************/
volatile int R_CMPA_BUF,R_CMPB_BUF;
volatile int R_SIOTX_count,R_SIORX_count;
volatile int R_SIORX_buf[10];
/****************************************************
//extern
*****************************************************/
extern void delay_nms(unsigned int t);
/*************************************************************/
//CORET Interrupt
//If you use a touch library file that does not contain coret
//you need to open this interrupt entry
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void CORETHandler(void)
{
// ISR content ...
}
/*************************************************************/
//SYSCON Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCONIntHandler(void)
{
// ISR content ...
nop;
if((SYSCON->MISR&ISOSC_ST)==ISOSC_ST) //ISOSC stable interrupt
{
SYSCON->ICR = ISOSC_ST;
}
else if((SYSCON->MISR&IMOSC_ST)==IMOSC_ST) //IMOSC stable interrupt
{
SYSCON->ICR = IMOSC_ST;
}
else if((SYSCON->MISR&EMOSC_ST)==EMOSC_ST) //EMOSC stable interrupt
{
SYSCON->ICR = EMOSC_ST;
}
else if((SYSCON->MISR&HFOSC_ST)==HFOSC_ST) //HFOSC stable interrupt
{
SYSCON->ICR = HFOSC_ST;
}
else if((SYSCON->MISR&SYSCLK_ST)==SYSCLK_ST) //SYSCLK change end & stable interrupt
{
SYSCON->ICR = SYSCLK_ST;
}
else if((SYSCON->MISR&IWDT_INT_ST)==IWDT_INT_ST) //IWDT alarm window interrupt
{
SYSCON->ICR = IWDT_INT_ST;
//SYSCON->IWDCNT=0x5aul<<24;
}
else if((SYSCON->MISR&WKI_INT_ST)==WKI_INT_ST)
{
SYSCON->ICR = WKI_INT_ST;
}
else if((SYSCON->MISR&RAMERRINT_ST)==RAMERRINT_ST) //SRAM check fail interrupt
{
SYSCON->ICR = RAMERRINT_ST;
}
else if((SYSCON->MISR&LVD_INT_ST)==LVD_INT_ST) //LVD threshold interrupt
{
nop;
SYSCON->ICR = LVD_INT_ST;
}
else if((SYSCON->MISR&HWD_ERR_ST)==HWD_ERR_ST) //Hardware Divider divisor = 0 interrupt
{
SYSCON->ICR = HWD_ERR_ST;
}
else if((SYSCON->MISR&EFL_ERR_ST)==EFL_ERR_ST) //Flash check fail interrupt
{
SYSCON->ICR = EFL_ERR_ST;
}
else if((SYSCON->MISR&OPTERR_INT)==OPTERR_INT) //Option load fail interrupt
{
SYSCON->ICR = OPTERR_INT;
}
else if((SYSCON->MISR&EM_CMLST_ST)==EM_CMLST_ST) //EMOSC clock monitor fail interrupt
{
SYSCON->ICR = EM_CMLST_ST;
}
else if((SYSCON->MISR&EM_EVTRG0_ST)==EM_EVTRG0_ST) //Event Trigger Channel 0 Interrupt
{
SYSCON->ICR = EM_EVTRG0_ST;
}
else if((SYSCON->MISR&EM_EVTRG1_ST)==EM_EVTRG1_ST) //Event Trigger Channel 1 Interrupt
{
SYSCON->ICR = EM_EVTRG1_ST;
}
else if((SYSCON->MISR&EM_EVTRG2_ST)==EM_EVTRG2_ST) //Event Trigger Channel 2 Interrupt
{
SYSCON->ICR = EM_EVTRG2_ST;
}
else if((SYSCON->MISR&EM_EVTRG3_ST)==EM_EVTRG3_ST) //Event Trigger Channel 3 Interrupt
{
SYSCON->ICR = EM_EVTRG3_ST;
}
else if((SYSCON->MISR&CMD_ERR_ST)==CMD_ERR_ST) //Command error interrupt
{
SYSCON->ICR = CMD_ERR_ST;
}
}
/*************************************************************/
//IFC Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void IFCIntHandler(void)
{
// ISR content ...
if(IFC->MISR&ERS_END_INT)
{
IFC->ICR=ERS_END_INT;
}
else if(IFC->MISR&RGM_END_INT)
{
IFC->ICR=RGM_END_INT;
}
else if(IFC->MISR&PEP_END_INT)
{
IFC->ICR=PEP_END_INT;
}
else if(IFC->MISR&PROT_ERR_INT)
{
IFC->ICR=PROT_ERR_INT;
}
else if(IFC->MISR&UDEF_ERR_INT)
{
IFC->ICR=UDEF_ERR_INT;
}
else if(IFC->MISR&ADDR_ERR_INT)
{
IFC->ICR=ADDR_ERR_INT;
}
else if(IFC->MISR&OVW_ERR_INT)
{
IFC->ICR=OVW_ERR_INT;
}
}
/*************************************************************/
//ADC Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void ADCIntHandler(void)
{
// ISR content ...
if((ADC0->SR&ADC12_EOC)==ADC12_EOC) //ADC EOC interrupt
{
ADC0->CSR = ADC12_EOC;
}
else if((ADC0->SR&ADC12_READY)==ADC12_READY) //ADC READY interrupt
{
ADC0->CSR = ADC12_READY;
}
else if((ADC0->SR&ADC12_OVR)==ADC12_OVR) //ADC OVR interrupt
{
ADC0->CSR = ADC12_OVR;
}
else if((ADC0->SR&ADC12_CMP0H)==ADC12_CMP0H) //ADC CMP0H interrupt
{
ADC0->CSR = ADC12_CMP0H;
}
else if((ADC0->SR&ADC12_CMP0L)==ADC12_CMP0L) //ADC CMP0L interrupt.
{
ADC0->CSR = ADC12_CMP0L;
}
else if((ADC0->SR&ADC12_CMP1H)==ADC12_CMP1H) //ADC CMP1H interrupt.
{
ADC0->CSR = ADC12_CMP1H;
}
else if((ADC0->SR&ADC12_CMP1L)==ADC12_CMP1L) //ADC CMP1L interrupt.
{
ADC0->CSR = ADC12_CMP1L;
}
else if((ADC0->SR&ADC12_SEQ_END0)==ADC12_SEQ_END0) //ADC SEQ0 interrupt,SEQ1~SEQ15 replace the parameter with ADC12_SEQ_END1~ADC12_SEQ_END15
{
ADC0->CSR = ADC12_SEQ_END0;
}
}
/*************************************************************/
//EPT0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EPT0IntHandler(void)
{
// ISR content ...
if((EPT0->MISR&EPT_TRGEV0_INT)==EPT_TRGEV0_INT) //TRGEV0 interrupt
{
EPT0->ICR=EPT_TRGEV0_INT;
}
else if((EPT0->MISR&EPT_TRGEV1_INT)==EPT_TRGEV1_INT) //TRGEV1 interrupt
{
EPT0->ICR=EPT_TRGEV1_INT;
}
else if((EPT0->MISR&EPT_TRGEV2_INT)==EPT_TRGEV2_INT) //TRGEV2 interrupt
{
EPT0->ICR=EPT_TRGEV2_INT;
}
else if((EPT0->MISR&EPT_TRGEV3_INT)==EPT_TRGEV3_INT) //TRGEV3 interrupt
{
EPT0->ICR=EPT_TRGEV3_INT;
}
else if((EPT0->MISR&EPT_CAP_LD0)==EPT_CAP_LD0) //Capture Load to CMPA interrupt
{
EPT0->ICR=EPT_CAP_LD0;
EXTI_trigger_CMD(DISABLE,EXI_PIN0,_EXIRT);
EXTI_trigger_CMD(ENABLE,EXI_PIN0,_EXIFT);
R_CMPA_BUF=EPT0->CMPA; //Low voltage counter
}
else if((EPT0->MISR&EPT_CAP_LD1)==EPT_CAP_LD1) //Capture Load to CMPB interrupt
{
EPT0->ICR=EPT_CAP_LD1;
EXTI_trigger_CMD(ENABLE,EXI_PIN0,_EXIRT);
EXTI_trigger_CMD(DISABLE,EXI_PIN0,_EXIFT);
R_CMPB_BUF=EPT0->CMPB; //Duty counter
}
else if((EPT0->MISR&EPT_CAP_LD2)==EPT_CAP_LD2) //Capture Load to CMPC interrupt
{
EPT0->ICR=EPT_CAP_LD2;
}
else if((EPT0->MISR&EPT_CAP_LD3)==EPT_CAP_LD3) //Capture Load to CMPD interrupt
{
EPT0->ICR=EPT_CAP_LD3;
}
else if((EPT0->MISR&EPT_CAU)==EPT_CAU) //Up-Counting phase CNT = CMPA interrupt
{
EPT0->ICR=EPT_CAU;
}
else if((EPT0->MISR&EPT_CAD)==EPT_CAD) //Down-Counting phase CNT = CMPA interrupt
{
EPT0->ICR=EPT_CAD;
}
else if((EPT0->MISR&EPT_CBU)==EPT_CBU) //Up-Counting phase CNT = CMPB interrupt
{
EPT0->ICR=EPT_CBU;
}
else if((EPT0->MISR&EPT_CBD)==EPT_CBD) //Down-Counting phase CNT = CMPB interrupt
{
EPT0->ICR=EPT_CBD;
}
else if((EPT0->MISR&EPT_CCU)==EPT_CCU) //Up-Counting phase CNT = CMPC interrupt
{
EPT0->ICR=EPT_CCU;
}
else if((EPT0->MISR&EPT_CCD)==EPT_CCD) //Down-Counting phase CNT = CMPC interrupt
{
EPT0->ICR=EPT_CCD;
}
else if((EPT0->MISR&EPT_CDU)==EPT_CDU) //Up-Counting phase CNT = CMPD interrupt
{
EPT0->ICR=EPT_CDU;
}
else if((EPT0->MISR&EPT_CDD)==EPT_CDD) //Down-Counting phase CNT = CMPD interrupt
{
EPT0->ICR=EPT_CDD;
}
else if((EPT0->MISR&EPT_PEND)==EPT_PEND) //End of cycle interrupt
{
EPT0->ICR=EPT_PEND;
}
//Emergency interruption
if((EPT0->EMMISR&EPT_EP0_EMINT)==EPT_EP0_EMINT) //interrupt flag of EP0 event
{
EPT0->EMICR=EPT_EP0_EMINT;
}
else if((EPT0->EMMISR&EPT_EP1_EMINT)==EPT_EP1_EMINT) //interrupt flag of EP1 event
{
EPT0->EMICR=EPT_EP1_EMINT;
}
else if((EPT0->EMMISR&EPT_EP2_EMINT)==EPT_EP2_EMINT) //interrupt flag of EP2 event
{
EPT0->EMICR=EPT_EP2_EMINT;
}
else if((EPT0->EMMISR&EPT_EP3_EMINT)==EPT_EP3_EMINT) //interrupt flag of EP3 event
{
EPT0->EMICR=EPT_EP3_EMINT;
}
else if((EPT0->EMMISR&EPT_EP4_EMINT)==EPT_EP4_EMINT) //interrupt flag of EP4 event
{
EPT0->EMICR=EPT_EP4_EMINT;
}
else if((EPT0->EMMISR&EPT_EP5_EMINT)==EPT_EP5_EMINT) //interrupt flag of EP5 event
{
EPT0->EMICR=EPT_EP5_EMINT;
}
else if((EPT0->EMMISR&EPT_EP6_EMINT)==EPT_EP6_EMINT) //interrupt flag of EP6 event
{
EPT0->EMICR=EPT_EP6_EMINT;
}
else if((EPT0->EMMISR&EPT_EP7_EMINT)==EPT_EP7_EMINT) //interrupt flag of EP7 event
{
EPT0->EMICR=EPT_EP7_EMINT;
}
else if((EPT0->EMMISR&EPT_CPU_FAULT_EMINT)==EPT_CPU_FAULT_EMINT) //interrupt flag of CPU_FAULT event
{
EPT0->EMICR=EPT_CPU_FAULT_EMINT;
}
else if((EPT0->EMMISR&EPT_MEM_FAULT_EMINT)==EPT_MEM_FAULT_EMINT) //interrupt flag of MEM_FAULT event
{
EPT0->EMICR=EPT_MEM_FAULT_EMINT;
}
else if((EPT0->EMMISR&EPT_EOM_FAULT_EMINT)==EPT_EOM_FAULT_EMINT) //interrupt flag of EOM_FAULT event
{
EPT0->EMICR=EPT_EOM_FAULT_EMINT;
}
}
/*************************************************************/
//WWDT Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void WWDTHandler(void)
{
WWDT->ICR=0X01;
WWDT_CNT_Load(0xFF);
if((WWDT->MISR&WWDT_EVI)==WWDT_EVI) //WWDT EVI interrupt
{
WWDT->ICR = WWDT_EVI;
}
}
/*************************************************************/
//GPT0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void GPT0IntHandler(void)
{
// ISR content ...
if((GPT0->MISR&GPT_INT_TRGEV0)==GPT_INT_TRGEV0) //TRGEV0 interrupt
{
GPT0->ICR = GPT_INT_TRGEV0;
}
else if((GPT0->MISR&GPT_INT_TRGEV1)==GPT_INT_TRGEV1) //TRGEV1 interrupt
{
GPT0->ICR = GPT_INT_TRGEV1;
}
else if((GPT0->MISR&GPT_INT_CAPLD0)==GPT_INT_CAPLD0) //Capture Load to CMPA interrupt
{
GPT0->ICR = GPT_INT_CAPLD0;
}
else if((GPT0->MISR&GPT_INT_CAPLD1)==GPT_INT_CAPLD1) //Capture Load to CMPB interrupt
{
GPT0->ICR = GPT_INT_CAPLD1;
}
else if((GPT0->MISR&GPT_INT_CAU)==GPT_INT_CAU) //Up-Counting phase CNT = CMPA Interrupt
{
GPT0->ICR = GPT_INT_CAU;
}
else if((GPT0->MISR&GPT_INT_CAD)==GPT_INT_CAD) //Down-Counting phase CNT = CMPA Interrupt
{
GPT0->ICR = GPT_INT_CAD;
}
else if((GPT0->MISR&GPT_INT_CBU)==GPT_INT_CBU) //Up-Counting phase CNT = CMPB Interrupt
{
GPT0->ICR = GPT_INT_CBU;
}
else if((GPT0->MISR&GPT_INT_CBD)==GPT_INT_CBD) //Down-Counting phase CNT = CMPB Interrupt
{
GPT0->ICR = GPT_INT_CBD;
}
else if((GPT0->MISR&GPT_INT_PEND)==GPT_INT_PEND) //End of cycle interrupt
{
GPT0->ICR = GPT_INT_PEND;
//2024-06-16 修改 单独用于PWM 1ms定时控制
PWM_Timer_1ms_Task();
}
}
/*************************************************************/
//RTC Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void RTCIntHandler(void)
{
// ISR content ...
if((RTC->MISR&ALRA_INT)==ALRA_INT) //Interrupt of alarm A
{
RTC->ICR=ALRA_INT;
RTC->KEY=0XCA53;
RTC->CR=RTC->CR|0x01;
RTC->TIMR=(0x10<<16)|(0x00<<8)|(0x00); //Hour bit6->0:am 1:pm
while(RTC->CR&0x02); //busy TIMR DATR ALRAR ALRBR Update done
RTC->CR &= ~0x1;
}
else if((RTC->MISR&ALRB_INT)==ALRB_INT) //Interrupt of alarm B
{
RTC->ICR=ALRB_INT;
}
else if((RTC->MISR&CPRD_INT)==CPRD_INT) //Interrupt of alarm CPRD
{
RTC->ICR=CPRD_INT;
}
else if((RTC->MISR&RTC_TRGEV0_INT)==RTC_TRGEV0_INT) //Interrupt of trigger event 0
{
RTC->ICR=RTC_TRGEV0_INT;
}
else if((RTC->MISR&RTC_TRGEV1_INT)==RTC_TRGEV1_INT) //Interrupt of trigger event 1
{
RTC->ICR=RTC_TRGEV1_INT;
}
}
/*************************************************************/
//UART0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0IntHandler(void)
{
char inchar = 0;
// ISR content ...
if ((UART0->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART0->ISR=UART_RX_INT_S;
inchar = CSP_UART_GET_DATA(UART0);
// UARTTxByte(UART0,inchar);
}
else if( (UART0->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART0->ISR=UART_TX_INT_S;
//TxDataFlag = TRUE;
PB_Send_String_INT();
}
else if ((UART0->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART0->ISR=UART_RX_IOV_S;
}
else if ((UART0->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART0->ISR=UART_TX_IOV_S;
}
}
/*************************************************************/
//UART1 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1IntHandler(void)
{
char inchar = 0;
// ISR content ...
if ((UART1->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART1->ISR=UART_RX_INT_S;
inchar = CSP_UART_GET_DATA(UART1);
UART1_RecvINT_Processing(inchar);
}
else if( (UART1->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART1->ISR=UART_TX_INT_S;
//TxDataFlag = TRUE;
}
else if ((UART1->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART1->ISR=UART_RX_IOV_S;
}
else if ((UART1->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART1->ISR=UART_TX_IOV_S;
}
}
/*************************************************************/
//UART2 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2IntHandler(void)
{
// ISR content ...
if ((UART2->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART2->ISR=UART_RX_INT_S;
//RxDataFlag = TRUE;
}
else if( (UART2->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART2->ISR=UART_TX_INT_S;
//TxDataFlag = TRUE;
}
else if ((UART2->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART2->ISR=UART_RX_IOV_S;
}
else if ((UART2->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART2->ISR=UART_TX_IOV_S;
}
}
/*************************************************************/
//I2C Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void I2CIntHandler(void)
{
// ISR content ...
//I2C_Slave_Receive(); //I2C slave receive function in interruption
}
/*************************************************************/
//SPI Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SPI0IntHandler(void)
{
// ISR content ...
if((SPI0->MISR&SPI_PORIM)==SPI_PORIM) //Receive Overrun Interrupt
{
SPI0->ICR = SPI_PORIM;
}
else if((SPI0->MISR&SPI_RTIM)==SPI_RTIM) //Receive Timeout Interrupt
{
SPI0->ICR = SPI_RTIM;
}
else if((SPI0->MISR&SPI_RXIM)==SPI_RXIM) //Receive FIFO Interrupt,FIFO can be set 1/8,1/4,1/2 FIFO Interrupt
{
SPI0->ICR = SPI_RXIM;
if(SPI0->DR==0xaa)
{
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x11;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x12;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x13;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x14;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x15;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
/* while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x16;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x17;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
while(((SPI0->SR) & SSP_TNF) != SSP_TNF); //Transmit FIFO is not full
SPI0->DR = 0x18;
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over*/
}
else
{
if(((SPI0->SR) & SSP_TFE)!=SSP_TFE)
{
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
SPI0->DR=0x0; //FIFO=0
while(((SPI0->SR) & SSP_BSY) == SSP_BSY); //Send or receive over
}
}
}
else if((SPI0->MISR&SPI_TXIM)==SPI_TXIM) //Transmit FIFO Interrupt
{
SPI0->ICR = SPI_TXIM;
}
}
/*************************************************************/
//SIO Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SIO0IntHandler(void)
{
// ISR content ...
//The sequence is more than 16bit to send the program
//1.disable interrupt in main loop 2.set the highest priority in the interrupt
/*CK801->IPR[0]=0X40404040;
CK801->IPR[1]=0X40404040;
CK801->IPR[2]=0X40404040;
CK801->IPR[3]=0X40404040;
CK801->IPR[4]=0X40404040;
CK801->IPR[5]=0X40404000;
CK801->IPR[6]=0X40404040;
CK801->IPR[7]=0X40404040;*/
//TXBUFEMPT The sequence length exceeds 15bit needs to be updated into this interrupt
/*if(SIO0->MISR&0X04)
{
SIO0->ICR=0X04;
if(R_SIOTX_count<1)
{
SIO0->TXBUF=(0x00<<30)|(0x00<<28)|(0x00<<26)|(0x00<<24)|(0x00<<22)|(0x00<<20)|(0x00<<18)|(0x00<<16)|
(0x01<<14)|(0x00<<12)|(0x01<<10)|(0x00<<8)|(0x01<<6)|(0x01<<4)|(0x01<<2)|(0x1<<0); //0:D0,1:D1,2:DL,3:DH;
R_SIOTX_count++;
}
}
if(SIO0->MISR&0X01) //TXDNE
{
SIO0->ICR=0X01;
if(R_SIOTX_count>=1)
{
delay_nms(10);
SIO0->TXBUF=(0x03<<30)|(0x02<<28)|(0x03<<26)|(0x02<<24)|(0x03<<22)|(0x02<<20)|(0x03<<18)|(0x02<<16)|
(0x01<<14)|(0x00<<12)|(0x01<<10)|(0x00<<8)|(0x01<<6)|(0x00<<4)|(0x01<<2)|(0x0<<0); //0:D0,1:D1,2:DL,3:DH;
R_SIOTX_count=0;
}
}*/
//The sequence is less than 16bit to send the program
/*if(SIO0->MISR&0X01) //TXDNE
{
SIO0->ICR=0X01;
delay_nms(10);
SIO0->TXBUF=(0x03<<30)|(0x02<<28)|(0x03<<26)|(0x02<<24)|(0x03<<22)|(0x02<<20)|(0x03<<18)|(0x02<<16)|
(0x01<<14)|(0x00<<12)|(0x01<<10)|(0x00<<8)|(0x01<<6)|(0x00<<4)|(0x01<<2)|(0x0<<0); //0:D0,1:D1,2:DL,3:DH;
}*/
if(SIO0->MISR&0X02) //RXDNE
{
SIO0->ICR=0X02;
if(R_SIORX_count>=1)
{
R_SIORX_buf[R_SIORX_count]=SIO0->RXBUF&0xff000000; //8bit
nop;
R_SIORX_count=0;
}
}
else if(SIO0->MISR&0X08) //RXBUFFULL
{
SIO0->ICR=0X08;
if(R_SIORX_count<1)
{
R_SIORX_buf[R_SIORX_count]=SIO0->RXBUF; //32bit
R_SIORX_count++;
}
}
else if(SIO0->MISR&0X010) //BREAK
{
SIO0->ICR=0X10;
}
else if(SIO0->MISR&0X020) //TIMEOUT
{
SIO0->ICR=0X20;
}
}
/*************************************************************/
//EXT0/16 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI0IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN0)==EXI_PIN0) //EXT0 Interrupt
{
SYSCON->EXICR = EXI_PIN0;
}
else if ((SYSCON->EXIRS&EXI_PIN16)==EXI_PIN16) //EXT16 Interrupt
{
SYSCON->EXICR = EXI_PIN16;
}
}
/*************************************************************/
//EXT1/17 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI1IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN1)==EXI_PIN1) //EXT1 Interrupt
{
SYSCON->EXICR = EXI_PIN1;
PB_OVERCURR_PWR_BUS_INT_Processing();
}
else if ((SYSCON->EXIRS&EXI_PIN17)==EXI_PIN17) //EXT17 Interrupt
{
SYSCON->EXICR = EXI_PIN17;
}
}
/*************************************************************/
//EXI2~3 18~19Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI2to3IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN2)==EXI_PIN2) //EXT2 Interrupt
{
SYSCON->EXICR = EXI_PIN2;
}
else if ((SYSCON->EXIRS&EXI_PIN3)==EXI_PIN3) //EXT3 Interrupt
{
SYSCON->EXICR = EXI_PIN3;
}
else if ((SYSCON->EXIRS&EXI_PIN18)==EXI_PIN18) //EXT18 Interrupt
{
SYSCON->EXICR = EXI_PIN18;
}
else if ((SYSCON->EXIRS&EXI_PIN19)==EXI_PIN19) //EXT19 Interrupt
{
SYSCON->EXICR = EXI_PIN19;
}
}
/*************************************************************/
//EXI4~9 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI4to9IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN4)==EXI_PIN4) //EXT4 Interrupt
{
SYSCON->EXICR = EXI_PIN4;
}
else if ((SYSCON->EXIRS&EXI_PIN5)==EXI_PIN5) //EXT5 Interrupt
{
SYSCON->EXICR = EXI_PIN5;
}
else if ((SYSCON->EXIRS&EXI_PIN6)==EXI_PIN6) //EXT6 Interrupt
{
SYSCON->EXICR = EXI_PIN6;
}
else if ((SYSCON->EXIRS&EXI_PIN7)==EXI_PIN7) //EXT7 Interrupt
{
SYSCON->EXICR = EXI_PIN7;
}
else if ((SYSCON->EXIRS&EXI_PIN8)==EXI_PIN8) //EXT8 Interrupt
{
SYSCON->EXICR = EXI_PIN8;
}
else if ((SYSCON->EXIRS&EXI_PIN9)==EXI_PIN9) //EXT9 Interrupt
{
SYSCON->EXICR = EXI_PIN9;
}
}
/*************************************************************/
//EXI4 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI10to15IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN10)==EXI_PIN10) //EXT10 Interrupt
{
SYSCON->EXICR = EXI_PIN10;
}
else if ((SYSCON->EXIRS&EXI_PIN11)==EXI_PIN11) //EXT11 Interrupt
{
SYSCON->EXICR = EXI_PIN11;
}
else if ((SYSCON->EXIRS&EXI_PIN12)==EXI_PIN12) //EXT12 Interrupt
{
SYSCON->EXICR = EXI_PIN12;
}
else if ((SYSCON->EXIRS&EXI_PIN13)==EXI_PIN13) //EXT13 Interrupt
{
SYSCON->EXICR = EXI_PIN13;
}
else if ((SYSCON->EXIRS&EXI_PIN14)==EXI_PIN14) //EXT14 Interrupt
{
SYSCON->EXICR = EXI_PIN14;
}
else if ((SYSCON->EXIRS&EXI_PIN15)==EXI_PIN15) //EXT15 Interrupt
{
SYSCON->EXICR = EXI_PIN15;
}
}
/*************************************************************/
//CONTA Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void CNTAIntHandler(void)
{
// ISR content ...
}
/*************************************************************/
//LPT Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPTIntHandler(void)
{
// ISR content ...
if((LPT->MISR&LPT_TRGEV0)==LPT_TRGEV0) //TRGEV0 interrupt
{
LPT->ICR = LPT_TRGEV0;
}
else if((LPT->MISR&LPT_MATCH)==LPT_MATCH) //MATCH interrupt
{
LPT->ICR = LPT_MATCH;
}
else if((LPT->MISR&LPT_PEND)==LPT_PEND) //PEND interrupt
{
LPT->ICR = LPT_PEND;
}
}
/*************************************************************/
//BT0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT0IntHandler(void)
{
// ISR content ...
if((BT0->MISR&BT_PEND)==BT_PEND) //BT0 PEND interrupt
{
BT0->ICR = BT_PEND;
}
else if((BT0->MISR&BT_CMP)==BT_CMP) //BT0 CMP Match interrupt
{
BT0->ICR = BT_CMP;
}
else if((BT0->MISR&BT_OVF)==BT_OVF) //BT0 OVF interrupt
{
BT0->ICR = BT_OVF;
}
else if((BT0->MISR&BT_EVTRG)==BT_EVTRG) //BT0 Event trigger interrupt
{
BT0->ICR = BT_EVTRG;
}
}
volatile U32_T SysTick_100us = 0;
volatile U32_T SysTick_1ms = 0;
/*************************************************************/
//BT1 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT1IntHandler(void)
{
static U8_T NUM = 0;
// ISR content ...
if((BT1->MISR&BT_PEND)==BT_PEND) //BT1 PEND interrupt
{
BT1->ICR = BT_PEND;
}
else if((BT1->MISR&BT_CMP)==BT_CMP) //BT1 CMP Match interrupt
{
BT1->ICR = BT_CMP;
NUM++;
SysTick_100us++;
if(NUM >= 10){
NUM = 0;
SysTick_1ms++;
PB_Scan_State_Task();
}
}
else if((BT1->MISR&BT_OVF)==BT_OVF) //BT1 OVF interrupt
{
BT1->ICR = BT_OVF;
}
else if((BT1->MISR&BT_EVTRG)==BT_EVTRG) //BT1 Event trigger interrupt
{
BT1->ICR = BT_EVTRG;
}
}
/*************************************************************/
/*************************************************************/
/*************************************************************/
void TKEYIntHandler(void)
{
// ISR content ...
}
void PriviledgeVioHandler(void)
{
// ISR content ...
}
void SystemDesPtr(void)
{
// ISR content ...
}
void MisalignedHandler(void)
{
// ISR content ...
}
void IllegalInstrHandler(void)
{
// ISR content ...
}
void AccessErrHandler(void)
{
// ISR content ...
}
void BreakPointHandler(void)
{
// ISR content ...
}
void UnrecExecpHandler(void)
{
// ISR content ...
}
void Trap0Handler(void)
{
// ISR content ...
}
void Trap1Handler(void)
{
// ISR content ...
}
void Trap2Handler(void)
{
// ISR content ...
}
void Trap3Handler(void)
{
// ISR content ...
}
void PendTrapHandler(void)
{
// ISR content ...
}
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/