标题:
sci的发送中断服务程序进不了
[打印本页]
作者:
cuicaifeng
时间:
2013-6-21 14:08
标题:
sci的发送中断服务程序进不了
#include"DSP28_Device.h"
void InitPieCtrl(void);
void InitPieVectTable(void);
interrupt void TX_ISR(void);
//interrupt void RX_ISR(void);
Uint16 Send_Flag,RX_dat[100],i,j,TX_dat[100];
void main(void)
{
/*
初始化系统
*/
InitSysCtrl();
/*
关中断
*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*
初始化
PIE
中断
*/
InitPieCtrl();
/*
初始化
PIE
中断矢量表
*/
InitPieVectTable();
/*
初始化
SCIA
寄存器
*/
InitSci();
for(i = 0; i < 100; i++)
{
RX_dat
=0;
TX_dat=i;
}
i = 0;
j = 0;
Send_Flag = 0;
EALLOW;
PieVectTable.TXAINT=&TX_ISR;
// PieVectTable.RXAINT=&RX_ISR;
EDIS;
// PieCtrl.PIEIER9.bit.INTx1=1;
PieCtrl.PIEIER9.bit.INTx2=1;
IER=IER|0x0100;
EINT;
while(1)
{
// if(SciaRegs.SCICTL2.bit.TXRDY==1&&Send_Flag==1)
// { SciaRegs.SCITXBUF=RX_dat;
// i++;
// Send_Flag=0;
// if(i==j)
// { i=0;
// j=0;
// }
// if(i==100)
// i=0;
//
// }
;
}
}
interrupt void TX_ISR(void)
{
// PieCtrl.PIEIER9.bit.INTx1=0;
SciaRegs.SCITXBUF=RX_dat;
i++;
if(i==100)
{
PieCtrl.PIEIER9.bit.INTx2=0;
}
PieCtrl.PIEACK.bit.ACK9=1;
// PieCtrl.PIEIER9.bit.INTx1=1;
}
//interrupt void RX_ISR(void)
//{
// RX_dat[j]=SciaRegs.SCIRXBUF.all;
// Send_Flag=1;
// j++;
// if(j==2)
// j=0;
// PieCtrl.PIEACK.bit.ACK9=1;
//}
首先
SCI
的接收中断服务程序可以正常进入执行,同时,也可以通过判断
SciaRegs.SCICTL2.TXRDY==1
来发送数据,在串口接收窗口中能正常显示发送的数据,
但就是进不去发送中断服务程序中,请求帮忙???
拜托兄弟们和版主们,给点意见,万分感谢!!!!!
作者:
baikeeditor
时间:
2013-7-31 13:49
发送TXENA使能,从SCITXBUF向TXSHF赋值使得TXRDY=1,表明SCITXBUF可以接受新的值,如果发送中断TX INT ENA使能,则数据的转移产生中断,而向SCITXBUF赋值将清零TXRDY。试着向SCITXBUF赋个值呢。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0