📄 int.c
字号:
#include "at91sam7a3.h"
extern unsigned long UART0_TE_Flag;
extern unsigned long UART0_TS_Flag;
extern int UART0_Reciev(void);
extern int UART1_Reciev(void);
extern int UART2_Reciev(void);
extern unsigned char HEXtoASCii(unsigned char);
unsigned long TestInData_Flag; //检测注入数据的标志位
unsigned int count; //检测注入数据的比特数
unsigned char TestInData[1024]; //存放检测注入数据的比特
unsigned int count1;
unsigned char TempData;
unsigned long UART1_RE_flag;
unsigned long UART2_RE_flag;
unsigned long UART0_TX_flag;
//unsigned int UART1_RE_count;
unsigned char UART1_RE[522];
//unsigned int UART2_RE_count;
unsigned char UART2_RE[522];
unsigned int Read_AIC_ISR; //
unsigned long TX_BUS_flag;
int UART0_Transmit(void);
int UART1_Transmit(void);
int UART2_Transmit(void);
//void timer0__irq(void);
// void SPI1__irq (void);
// void UART0__irq (void);
// void UART1__irq (void);
// void UART2__irq (void);
void UART0(void)__irq ;
void UART1(void)__irq ;
void UART2(void)__irq ;
/*
void IRQ_Handler (void) __irq
{
__asm
{
ADD R14,PC,#4
LDR R0, =0XFFFFF030
LDR PC,[R0]
}
}
*/
/*
void timer0__irq(void)
{
__asm { STMDB R13!,{R0-R12} }
T0TCR = 0x00000003; //定时器0复位
T0IR = 0x00000001; //清定时器0之0通道中断
IO2SET = 0x003F0000;
VICVectAddr = 0x00000000; //acknowledge Interrupt
__asm { LDMIA R13!,{R0-R12} }
}
*/
void UART0(void)__irq
{
AT91PS_AIC pAIC;
pAIC = AT91C_BASE_AIC;
pAIC->AIC_EOICR = 0xFFFFFFFF;
UART0_Reciev();
// if ((UART0_TS_Flag == 0x55555555)) //((U0IIR&0x0e)==0x02)&&
// {
// if (UART0_Transmit()==1);
// }
pAIC->AIC_ICCR = 0xFFFFFFFF;
}
void UART1(void)__irq
{
AT91PS_AIC pAIC;
AT91S_USART *pUS1;
pAIC = AT91C_BASE_AIC;
pAIC->AIC_EOICR = 0xFFFFFFFF;
pUS1 = AT91C_BASE_US1; //0xFFFC4000;
if (UART1_RE_flag == 0xaaaaaaaa)
{
count = 0x00000000;
UART1_RE[count] = pUS1->US_RHR;
count = count+1;
UART1_RE_flag = 0x55555555;
}
else if (UART1_RE_flag == 0x55555555)
{
UART1_RE[count] = pUS1->US_RHR;
count++;
if (count == 68)
{
UART1_RE_flag = 0xaaaaaaaa;
UART0_TX_flag = 0x55555555;
TX_BUS_flag = 0x55555555; //说明A总线发送
}
}
pAIC->AIC_ICCR = 0xFFFFFFFF;
}
void UART2(void)__irq
{
AT91PS_AIC pAIC;
AT91S_USART *pUS2;
// unsigned long temp;
pAIC = AT91C_BASE_AIC;
pAIC->AIC_EOICR = 0xFFFFFFFF;
pUS2 = AT91C_BASE_US2; //0xFFFC4000;
if (UART2_RE_flag == 0xaaaaaaaa)
{
count1 = 0x00000000;
UART2_RE[count1] = pUS2->US_RHR;
count1 = count1+1;
UART2_RE_flag = 0x55555555;
}
else if (UART2_RE_flag == 0x55555555)
{
UART2_RE[count1] = pUS2->US_RHR;
count1++;
if (count1 == 68)
{
UART2_RE_flag = 0xaaaaaaaa;
UART0_TX_flag = 0x55555555;
TX_BUS_flag = 0xaaaaaaaa; //说明A总线发送
}
}
pAIC->AIC_ICCR = 0xFFFFFFFF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -