stm32串口通信如何实现二次发送仍显示上次的内容
时间:10-02
整理:3721RD
点击:
我想实现串口中断接收上位机发过来的字符串,判断后,显示其相关信息。第一次发送后,显示的内容正确,但第二次发送其他的字符串时,显示的仍然是第一次的内容,不知道为什么,还请各位大神多多帮助?这是中断程序:
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET) //中断产生
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
Uart1_Buffer[Uart1_Rx_Num] = USART_ReceiveData(USART1);
Uart1_Rx_Num++;
}
if((Uart1_Buffer[0] == 0x5A)&&(Uart1_Buffer[Uart1_Rx_Num-1] == 0xA5)) //判断最后接收的数据是否为设定值,确定数据正确性
Uart1_Sta=1;
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET) //溢出
{
USART_ClearFlag(USART1,USART_FLAG_ORE); //读SR
USART_ReceiveData(USART1); //读DR
}
}注:数组长度固定位3
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET) //中断产生
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
Uart1_Buffer[Uart1_Rx_Num] = USART_ReceiveData(USART1);
Uart1_Rx_Num++;
}
if((Uart1_Buffer[0] == 0x5A)&&(Uart1_Buffer[Uart1_Rx_Num-1] == 0xA5)) //判断最后接收的数据是否为设定值,确定数据正确性
Uart1_Sta=1;
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET) //溢出
{
USART_ClearFlag(USART1,USART_FLAG_ORE); //读SR
USART_ReceiveData(USART1); //读DR
}
}注:数组长度固定位3
发送的中断缓冲区Uart1_Buffer要清零 Uart1_Rx_Num也要归零
在主程序中有啥地方将 Uart1_Rx_Num 和 Uart1_Sta 归零没?
接收缓冲区 Uart1_Buffer 可以不用清零;
学习学习 顶下
学习学习 顶下