stm32串口中断程序问题

我的中断程序如下:
void USART1_IRQHandler(void)
{
uint8_t INFO_usart1 = 0;
// USART_ITConfig(USART1, USART_IT_TXE, DISABLE); /// 重要

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
INFO_usart1=USART_ReceiveData(USART1); //从串口1接收1字节数据
// while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) !=RESET);

GPIO_ResetBits(GPIO_LED,DS2_PIN);

USART_SendData(USART1,INFO_usart1);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET );
}

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{ //清除接收中断标志
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}
}
初始化及配置都没有什么问题,但就是用串口助手每次给arm发送单个字符时,程序能正常工作,但发送多个字符时,输出的个数是对的,但是内容不对,请大神帮忙解答下

第1个回答  2014-03-12

下面的代码是我程序里面用的,工作是正常的。。

void USART1_IRQHandler(void)
{   
    Uint8_t dat1;
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {    
    dat1=USART_ReceiveData(USART1);   //缓存COM1中断接收的数据
    USART1_SendByte(dat1);      //回显COM1中断接收的数据
    //COM_Command(dat1);      //处理COM1中断接收的数据
    }
    if (USART_GetITStatus(USART1, USART_IT_TC) != RESET)
    {/* clear interrupt */
        USART_ClearITPendingBit(USART1, USART_IT_TC);
    }
}

本回答被网友采纳
第2个回答  2014-03-12
解决了吗?
相似回答