📄 interrupts.c
字号:
#include "talkthrough.h"
int CH_sel;//通道标志
/****************设置中断程序*********************/
void InitInterrupts(void)
{
sysreg_write(sysreg_IMASK, 0x0001); //初始化过程屏蔽所有中断(除COM定时器中断)
enable_interrupts(); //使能全局中断
sysreg_write(sysreg_IFC, 0x00FE); //清除相关中断标志
sysreg_write(sysreg_ICNTL, 0x0002); //禁止中断嵌套
interrupt(SIGSPORT0XMIT, Sport0TxIsr); //设置中断类型对应的中断服务程序
}
/****************串口接收中断程序*****************/
void Sport0RxIsr(int sig)
{ if(CH_sel)
{
FirIn=sport_read(SPORT_0); //从串口0接收一个通道的数据
ProcessData(); //实时滤波处理
CH_sel=0;
}
else CH_sel=1;
sport_write(SPORT_0,FirOut); //将滤波结果通过串口0输出到D/A
}
/*****************串口发送中断程序*****************/
void Sport0TxIsr(int sig) //完成功能:完成初始化AD73322过程
{
if(!iCodecInitFinished) // all configuration words sent
{
iTxIsrCounter++; // increment counter for array iCodecRegs
if(iTxIsrCounter == SIZE_OF_CODEC_REGS) iCodecInitFinished = 1; // last word was sent in frame before set flag to indicate that
else sport_write(SPORT_0, iCodecRegs[iTxIsrCounter]); // send next configuration word
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -