F2812的SCI接收中断
这是中断服务程序interruptvoidSciaRxFifoIsr(){Rchar=SciaRegs.SCIRXBUF.all;Rchar&=0xFF;Rcount++...
这是中断服务程序
interrupt void SciaRxFifoIsr()
{
Rchar=SciaRegs.SCIRXBUF.all;
Rchar&=0xFF;
Rcount++;
PieCtrlRegs.PIEACK.all|=0x0100;//允许其他相应中断
}
初始化程序
void Scia_init()
{
EALLOW;
GpioMuxRegs.GPFMUX.all|=SCI_IO;//设置IO口为SCIA功能口
EDIS;
SciaRegs.SCICCR.all=0x0007;//一个停止位,无校验,禁止自测试,空闲地址模式,字长8位
SciaRegs.SCICTL1.all=0x0003;//复位,SCIA发送器和接收器使能
SciaRegs.SCICTL2.all=0x0002;//使能接收中断,禁止发送中断
SciaRegs.SCIHBAUD=0x0001;
SciaRegs.SCILBAUD=0x00E7;
SciaRegs.SCICTL1.all=0x0023;
}
在调试的时候能进中断,但是每次都是进2次,这是为什么?
比如我从上位机一次性发送0xaa 0xbb 0xcc 0xdd给DSP,会进2次中断服务程序
第一次读出来是0xaa,第二次读出来是0xff.为什么会进2次中断呢,,,,,求解答
每次只发一个字节的时候就只进一次中断
没有使用FIFO 展开
interrupt void SciaRxFifoIsr()
{
Rchar=SciaRegs.SCIRXBUF.all;
Rchar&=0xFF;
Rcount++;
PieCtrlRegs.PIEACK.all|=0x0100;//允许其他相应中断
}
初始化程序
void Scia_init()
{
EALLOW;
GpioMuxRegs.GPFMUX.all|=SCI_IO;//设置IO口为SCIA功能口
EDIS;
SciaRegs.SCICCR.all=0x0007;//一个停止位,无校验,禁止自测试,空闲地址模式,字长8位
SciaRegs.SCICTL1.all=0x0003;//复位,SCIA发送器和接收器使能
SciaRegs.SCICTL2.all=0x0002;//使能接收中断,禁止发送中断
SciaRegs.SCIHBAUD=0x0001;
SciaRegs.SCILBAUD=0x00E7;
SciaRegs.SCICTL1.all=0x0023;
}
在调试的时候能进中断,但是每次都是进2次,这是为什么?
比如我从上位机一次性发送0xaa 0xbb 0xcc 0xdd给DSP,会进2次中断服务程序
第一次读出来是0xaa,第二次读出来是0xff.为什么会进2次中断呢,,,,,求解答
每次只发一个字节的时候就只进一次中断
没有使用FIFO 展开
2个回答
展开全部
两个SCI都好用,是你程序的问题,我曾经做过自发自收,A发B收和B发A收,都没有问题
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个SCI都好用,是你程序的问题,我曾经做过自发自收,A发B收和B发A收,都没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询