📄 isr.c
字号:
/*******************************************************************
**Description: Interrupt Service Routine For C language
*******************************************************************/
#include "hardware.h"
#include "Get_key.h"
#include "Try1.h"
#include "Init_System.h"
#include "led.h"
char g_KeyValue;
unsigned int g_KeyFlag;
unsigned int g_TimerA_Overflow_Flag = 0;
void FIQ(void) __attribute__ ((ISR));
void FIQ(void)
{
if(*P_INT_Ctrl&C_FIQ_PWM)
{
*P_INT_Clear =C_FIQ_PWM;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_FIQ_TMA)
{
*P_INT_Clear =C_FIQ_TMA;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_FIQ_TMB)
{
*P_INT_Clear =C_FIQ_TMB;
CLEAR_WATCHDOG;
}
}
void IRQ0(void) __attribute__ ((ISR));
void IRQ0(void)
{
if(*P_INT_Ctrl&C_IRQ0_PWM)
{
*P_INT_Clear =C_IRQ0_PWM;
CLEAR_WATCHDOG;
}
}
void IRQ1(void) __attribute__ ((ISR));
void IRQ1(void)
{
if(*P_INT_Ctrl&C_IRQ1_TMA)
{
g_TimerA_Overflow_Flag += 1;
*P_INT_Clear =C_IRQ1_TMA;
CLEAR_WATCHDOG;
}
}
void IRQ2(void) __attribute__ ((ISR));
void IRQ2(void)
{
if(*P_INT_Ctrl&C_IRQ2_TMB)
{
*P_INT_Clear =C_IRQ2_TMB;
CLEAR_WATCHDOG;
}
}
void IRQ3(void) __attribute__ ((ISR));
void IRQ3(void)
{
if(*P_INT_Ctrl&C_IRQ3_EXT2)
{
g_UltraSonic_Count[g_UltraSonic_Count1] = *P_TimerA_Data;
*P_INT_Ctrl=(C_IRQ5_4Hz);
RUN_UART_INT;
g_UltraSonic_Count[g_UltraSonic_Count1] += g_TimerA_Overflow_Flag*65535;
*P_TimerA_Data = 0x0000;
g_UltraSonic_Count1 += 1;
g_TimerA_Overflow_Flag = 0;
*P_INT_Clear = C_IRQ3_EXT2;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_IRQ3_EXT1)
{
*P_INT_Clear =C_IRQ3_EXT1;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_IRQ3_KEY)
{
*P_INT_Clear = C_IRQ3_KEY;
CLEAR_WATCHDOG;
}
}
void IRQ4(void) __attribute__ ((ISR));
void IRQ4(void)
{
if(*P_INT_Ctrl&C_IRQ4_1KHz)
{
*P_INT_Clear =C_IRQ4_1KHz;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_IRQ4_2KHz)
{
*P_INT_Clear = C_IRQ4_2KHz;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_IRQ4_4KHz)
{
*P_INT_Clear = C_IRQ4_4KHz;
CLEAR_WATCHDOG;
}
}
void IRQ5(void) __attribute__ ((ISR));
void IRQ5(void)
{
char *P1;
g_KeyValue = 0;
if(*P_INT_Ctrl&C_IRQ5_2Hz)
{
*P_INT_Clear = C_IRQ5_2Hz;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_IRQ5_4Hz)
{
P1 = &g_KeyValue;
g_KeyFlag = 0;
g_KeyFlag = Get_Key(P1);
Deal_Key();
*P_INT_Clear = C_IRQ5_4Hz;
CLEAR_WATCHDOG;
}
}
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
if(*P_INT_Ctrl&C_IRQ6_TMB1)
{
*P_INT_Clear = C_IRQ6_TMB1;
CLEAR_WATCHDOG;
}
else if(*P_INT_Ctrl&C_IRQ6_TMB2)
{
*P_INT_Clear = C_IRQ6_TMB2;
CLEAR_WATCHDOG;
}
}
/*************************************************************
**Function name: IRQ7()
**Input: none
**Output: none
**Description: this function works when UART receive or send a byte. But SPCE061
seems just have receive data interrupt servies, but no send data
interrupt sevies. when a byte was read interrupt flag will automatically
cleared
**Return: none
**************************************************************/
void IRQ7(void)__attribute__((ISR));
void IRQ7(void)
{
}
void BREAK(void)__attribute__((ISR));
void BREAK(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -