📄 interrupts.c
字号:
//interrupts.c
#include "interrupts.h"
/**** INTERRUPTS FUNCTION ****/
void (*UART0_function)(unsigned char);
void (*UART1_function)(unsigned char);
void (*EINT0_function)();
void (*EINT1_function)();
void (*EINT2_function)();
void (*RTC_function)();
void VIC_EnableInt(unsigned int IntType)
{
VICIntEnable |= IntType; //Enable inerrupt
}
void VIC_DisableInt(unsigned int IntType)
{
VICIntEnClear |= IntType; //Disable interrupt
}
void Vic_Init()
{
VICProtection = 0; // Setup interrupt controller.
VICIntEnClear = 0xffffffff; // Disable all interrupts
}
void InitUART0Interrupt(void(*UART0_func)(unsigned char))
{
UART0_function = UART0_func; // Setup UART0 callback function.
VICIntSelect &= ~VIC_UART0_bit; // IRQ on UART0 line.
VICVectAddr0 = (unsigned int)&UART0Interrupt;
VICVectCntl0 = 0x20 | VIC_UART0; // Enable vector interrupt for UART0.
VICIntEnable |= VIC_UART0_bit; // Enable UART0 interrupt.
}
void InitUART1Interrupt(void(*UART1_func)(unsigned char))
{
UART1_function = UART1_func; // Setup UART1 callback function.
VICIntSelect &= ~VIC_UART1_bit; // IRQ on UART1 line.
VICVectAddr1 = (unsigned int)&UART1Interrupt;
VICVectCntl1 = 0x20 | VIC_UART1; // Enable vector interrupt for UART1.
VICIntEnable |= VIC_UART1_bit; // Enable UART1 interrupt.
}
void InitEINT0Interrupt(void(*EINT0_func)())
{
EINT0_function = EINT0_func; // Setup timer callback function.
VICIntSelect &= ~VIC_EINT0_bit; // IRQ on EINT0 line.
VICVectAddr2 = (unsigned int)&EINT0Interrupt;
VICVectCntl2 = 0x20 | VIC_EINT0; // Enable vector interrupt for EINT0.
VICIntEnable |= VIC_EINT0_bit; // Enable EINT0 interrupt.
}
void InitEINT1Interrupt(void(*EINT1_func)())
{
EINT1_function = EINT1_func; // Setup timer callback function.
VICIntSelect &= ~VIC_EINT1_bit; // IRQ on EINT1 line.
VICVectAddr3 = (unsigned int)&EINT1Interrupt;
VICVectCntl3 = 0x20 | VIC_EINT1; // Enable vector interrupt for EINT1.
VICIntEnable |= VIC_EINT1_bit; // Enable EINT1 interrupt.
}
void InitEINT2Interrupt(void(*EINT2_func)())
{
EINT2_function = EINT2_func; // Setup timer callback function.
VICIntSelect &= ~VIC_EINT2_bit; // IRQ on EINT2 line.
VICVectAddr4 = (unsigned int)&EINT2Interrupt;
VICVectCntl4 = 0x20 | VIC_EINT2; // Enable vector interrupt for EINT2.
VICIntEnable |= VIC_EINT2_bit; // Enable EINT2 interrupt.
}
void InitRTCInterrupt(void(*RTC_func)())
{
RTC_function = RTC_func; // Setup timer callback function.
VICIntSelect &= ~VIC_RTC_bit; // IRQ on RTC line.
VICVectAddr5 = (unsigned int)&RTCInterrupt;
VICVectCntl5 = 0x20 | VIC_RTC; // Enable vector interrupt for RTC.
VICIntEnable |= VIC_RTC_bit; // Enable RTC interrupt.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -