char BUF1[64];
char BUF2[64];
char *pBUF = BUF1;
char *SendBuf = BUF1;
void StartSend(void)
{
USART1->DR = *SendBuf;
}
void Input_BUF(u8 Data)
{
static u8 count = 0;
if (count >= 64){
if (pBUF == &BUF1[0]) {pBUF = &BUF2[0]; SendBuf = &BUF1[0];}
else if (pBUF == &BUF2[0]) {pBUF = &BUF1[0]; SendBuf = &BUF2[0];}
StartSend();
count = 0;
}
*(pBUF+count++) = Data;
}
void USART1_IRQHandler(void)
{
static u8 count = 1;
/*中断发送*/
if(USART1->SR&(1<<5))//接收到数据
{
if (count < 63){
USART1->DR = *(SendBuf + count++);
}
else {
count = 1;
}
USART_RX_STA|=0x80;
}
}
貌似是没有使能发送中断,于是在串口初始化的程序中加入 USART1->CR1|=1<<7; //TCIE中断使能
主函数如下 while(1)
{
Input_BUF(test++);
delay_ms(50);
}
现在问题是这样的,不加入TCIE中断使能的话串口可以输出00 40 80 00 40 80.。。 中断使能后却什么都输出不出来了。。。
找不到原因啊!!! 为啥使能了发送中断反而进不了中断呢? |