我想做的是定时器A每两秒产生一次中断,然后在中断服务程序中用串口发送两个字节的数据,但是现在只能实现发送一个字节的数据,如果改为发送两个字节的数据,就会在发送第二个字节的数据时,表示上一字节发送完成的标志位一直是发送未完成,导致卡在等待第一个字节发送完的语句,请问,这是为什么呢?
定时器A的中断服务程序的长度与时间有什么要求嘛?
我定时器A设定的是采用ACLK,32768HZ,工作在连续计数模式,溢出产生中断~
附部分程序:
#pragma vector = TIMERA1_VECTOR
__interrupt void TIMER_A (void)
{
switch (TAIV)
{
case 2: break;
case 4: break;
case 10:
{
switch (TANUM)
{
case 0:UART_PutChar('S');TANUM++;break;
case 1:UART_PutChar('B');TANUM++;break;
case 2:UART_PutChar('E');TANUM=0;break;
}
}
}
}
其中,如果UART_PutChar('S');改为连续的两句,就会卡住~求好心人帮忙啊~~~·~~
此帖出自
小平头技术问答
可以在中断里面跳出中断,设置发送2个字节的标志位
在程序外发送2个字节后再次进入睡眠模式
或者修改UART_PutChar('B'); 这个函数
一周热门 更多>