u8 TX_buffer[LEN]=
{
0x12,0x13,0x14,0x15,
0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23
};//这是我要向电脑发送的12个数据
void USART3_IRQHandler()//这是我写的串口中断函数
{
static u8 count=0;
if( (USART3->SR & USART_SR_TXE) && (USART3->SR & USART_CR1_TXEIE))
{
USART3->DR = TX_buffer[count++];
}
if(count>=LEN)
{
USART3->CR1 &= ~(1<<7);//关发送中断
count=0;
}
}
//这是主函数
while(1)
{
USART3->CR1 |= 1<<7; //发送缓冲区空中断使能
delay_ms(500);
}
这是窗口助手的显示结果
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 45 D1 11 94 04 0A 12 1A FE
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 17 18 19 20 21 A4 E4
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 45 D1 11 94 04 0A 12 1A FE
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 11 94 04 0A 12 1A FE
12 13 14 15 16 17 18 19 20 21 22 23
///////////////////////////////////////////////
请问为什么数据有时发送为什么出错?
|