大家帮我看看串口接收中断的小麻烦。。。

2019-03-23 20:07发布

各位高手,有2个大麻烦: 
1、下好程序后,串口有接收到数据可以跳中断,但是,第二次下程序后,就不能跳到中断处理函数了,必须重新上电后才可以重新跳中断,这是为什么尼? 
2、我想用串口接收中断来接收一个字符串,以目前来看只能接收到部分,数据丢失严重,请大家帮我你看看程序,谢谢 


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
lucky_luky
2019-03-24 13:48
//中断响应函数
void USART1_IRQHandler(void)  
{  
    u8 i;  

if (USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)//注意!不能使用if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)来判断
    {
        USART_ReceiveData(USART1);
    }
   //正在处理上一条通讯,接收到数据不处理 //上面一段是网上copy的,具体数据溢出标志位不太懂
      
    if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)  
    {   
USART_ClearITPendingBit(USART1, USART_IT_RXNE);            
        i = USART_ReceiveData(USART1);  
Buf_First_Serial[First_Int++] = USART_ReceiveData(USART1);          //将接收到的字符串存到缓存中, 缓存指针向后移动

if(First_Int > 500)                //如果缓存满,将缓存指针指向缓存的首地址
{
First_Int = 0;
}        
/***********test code***************/
printf("interrup happen"); //跳转中断的标志
/**************************/
        USART_SendData(USART1,i);  
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)  
        {  
        }                 
    }

一周热门 更多>