程序是使用中断方式接收PC数据,然后回发,
A和B采用TC和TXE标志判断。
A程序发送的数据长度超多一定程度(比如20),发送几次单片机就停了,不知怎么回事。
B程序无任何问题
使用串口调试助手,发送间隔20ms
程序A:
void USART1_IRQHandler(void)
{
uint8_t ch;
if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
{
ch = USART_ReceiveData(USART1);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
USART_SendData(USART1, ch);
}
}
程序B:
void USART1_IRQHandler(void)
{
uint8_t ch;
if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
{
ch = USART_ReceiveData(USART1);
while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
USART_SendData(USART1, ch);
}
}
|