📄 interrupt.c
字号:
#include "datatype.h"
#include "timer.c"
#include "EDMA.h"
void INTERRUPT_INITIAL();
interrupt void qdma_isr();
//interrupt void edma_isr();
interrupt void timer0_isr();
//interrupt void timer1_isr();
int flag;
volatile int recv_done, recv_buddy_done;
volatile int Ttimer0;
// extern unsigned short led_t0;
void INTERRUPT_INITIAL()
{
/*
该程序注意完成按照默认情况完成中断的初始化,如:
Description: set the interrupt polarity and interrupt selector */
CSR = 0x100; /* disable all interrupts */
IER = 0x1; /* disable all interrupts */
ICR = 0xffff; /* clear all pending interrupts*/
// *(unsigned volatile int *)EXTPOL = 0x0; // a low-to-high transition on a interrupt source is recognized as a interrupt
// *(unsigned volatile int *)MUXL = 0x250718a4; // Set the fault value
// 31 30 - 26 25 - 21 20 - 16 15 14 - 10 9 - 5 4 - 0
// Reserved INSEL9 INSEL8 INSEL7 Reserved INSEL6 INSEL5 INSEL4
// 0 01001 01000 00111 0 00110 00101 00100
// *(unsigned volatile int *)MUXH = 0x8202d43; // Set the fault value
// 31 30 - 26 25 - 21 20 - 16 15 14 - 10 9 - 5 4 - 0
// Reserved INSEL15 INSEL14 INSEL13 Reserved INSEL12 INSEL11 INSEL10
// 0 00010 00001 00000 0 01011 01010 00011
}
#if 1
/*------------------------------------------------------------*/
/* qdma_isr() -- interrupt service routine for qdma */
/*------------------------------------------------------------*/
interrupt void qdma_isr()
{
// Used_T = (timer0_read()- Start_T)/50 ; //Used_T is in us
*(unsigned volatile int *)CIPR |= 0x100;
*(unsigned volatile int *)TIMER0_CTL |= 0; /* stop timer0 */
flag = 1;
}
#endif
/*-------------------------------------------------------*/
/* edma_isr() -- interrupt service routine for edma */
/*-------------------------------------------------------*/
interrupt void edma_isr()
{
#if 0
if(GET_BIT(CIPR, McBSPr_EDMA_Ch[BUDDY_BSPCH]))
{
REG_WRITE(CIPR, (1<<McBSPr_EDMA_Ch[BUDDY_BSPCH]));
recv_buddy_done=1;
}
/*
else if(GET_BIT(CIPR, McBSPr_EDMA_Ch[SPI_BSPCH]))
{
REG_WRITE(CIPR, (1<<McBSPr_EDMA_Ch[SPI_BSPCH]));
recv_done=1;
}
*/
else if(GET_BIT(CIPR, McBSPr_EDMA_Ch[BABU_BSPCH]))
{
REG_WRITE(CIPR, (1<<McBSPr_EDMA_Ch[BABU_BSPCH]));
recv_done=1;
}
#endif
#if 1
/*-----------------------------*/
if (*(DWORD *)CIPR & 0x2000)
{
*(DWORD *)CIPR = 0x2000;
recv_buddy_done=1;
}
if (*(DWORD *)CIPR & 0x8000)
{
*(DWORD *)CIPR = 0x8000;
recv_done = 1;
}
//flag=1;
/*-----------------------------*/
#endif
}
/*-------------------------------------------------------------------------*/
/* timer0_isr() - interrupt service routine for TIMER1 */
/*-------------------------------------------------------------------------*/
interrupt void timer0_isr()
{
TIMER_INTset_ms(0,1);
// timer0_INTset_ms(1);
Ttimer0 = 1;
}
/*-------------------------------------------------------------------------*/
/* timer1_isr() - interrupt service routine for TIMER1 */
/*-------------------------------------------------------------------------*/
/*
interrupt void timer1_isr()
{
if (led_t0 == 0x8888)
led_t0 = 0x1111;
else
led_t0 = led_t0 <<1;
*(WORD *)FLAG_LED = (~led_t0);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -