使用18f452,设定定时器,想在固定的时间内,发送一帧数据,串口初始后,使用低等级的中断发送,现在的情形就是,有时候能进入中断发送,并能发送出数据,长度也正确,但通常是几次后就会一次性的发送很多数据,导致程序跑飞;有时候不能进入串口发送;在串口中断处理中,我是如此
void low_isr(void)
{
if ((PIR1bits.TXIF)&&(PIE1bits.TXIE))
{
if(sentcnt>1)
{
TXSTAbits.TXEN = 0;
return;
}
else
{
sentcnt++;
TXREG = *(++sendpoint);
while(!TXSTAbits.TRMT);
// Nop(); Nop(); Nop();
// return;
}
}
}
这个是网上很多人的举例,我就不知道是哪里的设置问题,可能会导致在sentcnt》1后还继续发送数据,请大家给些建议,谢谢!
|