stm32 串口 中断的问题

USART_SendData(USART2, 0x31);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET );后进入中断,
中断程序如下面。
因为串口返回的是8组数据。但是调试时发现返回数据不是想要的数据。
void USART2_IRQHandler(void)
{ int i; //定义字符变量

if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //判断发生接收中断
{ USART_ClearITPendingBit(USART2, USART_IT_RXNE); //清除中断标志
for( i=0;i<7;i++)

{
TxBuf1[i]=USART_ReceiveData(USART2); //接收数据
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);//等待发送结束

}
LCD_write_String(7,2,IntToStr(TxBuf1[4]));
}

应该如何修改?谢谢了

第1个回答  2012-04-29
返回的数据都是一样的吧,都是第一个字符?
你应该定义一个全局变量记录接受的字节数,另外每次中断只能接受一个字节。
你的中断函数是完成接受数据的吧,怎么里面还有一句(倒数第四行)等待发送结束?
int i=0;
void USART2_IRQHandler(void)
{
if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //判断发生接收中断
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE); //清除中断标志
TxBuf1[i++]=USART_ReceiveData(USART2); //接收数据
if(i==8) //接受完8个字节数据
{
LCD_write_String(7,2,IntToStr(TxBuf1[4]));
i=0; //计数清零
}
}
相似回答