STM32/STM8技术论坛
直播中

a838899

10年用户 313经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 连接器
私信 关注
[问答]

麻烦看看这个串口接收中断对不对?

void USART1_IRQHandler(void)                        //串口1中断服务程序
        {
                unsigned char rCh;  
        static char rCnt = 0;  
               
                if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET)  
                {      
         //  USART_SendData(USART1, USART_ReceiveData(USART1));  
        rCh = USART_ReceiveData(USART1);  
        USART_RX_BUF[rCnt] = rCh;        
                rCnt++;       
        if(rCnt==10)       
                {
               
                    rCnt=0;
                    memcpy(USART_RX_TEM,USART_RX_BUF,10);//缓冲  
            USART_RX_STA = 1;  //通知主循环处理  
               
                }
               
                USART_ClearITPendingBit(USART1, USART_IT_RXNE);
                //USART_ClearFlag(USART1,USART_FLAG_TC);
        }
}

发送的:
if(USART_RX_STA==1)
                {
                USART_RX_STA=0;
            UART_PutStr(USART1, "USART1 OK!rn");
                UART_PutStr(USART1, (u8*)USART_RX_TEM[USART_REC_LEN]);
               
                }


运行后:串口返回的数据和发送的对不上。。发送的第一句正常 ,第二句对不上。


回帖(3)

人中狼

2017-4-25 16:50:38

最佳答案

其他部分没看,不过每次进入中断都会有 static char rCnt = 0;  ,确定每次进入中断都能把数据包收完吗
举报

a838899

2017-4-26 09:38:31
有知道的吗?返回的数据不变 一直是FD 0C
举报

a838899

2017-4-26 16:08:40
引用: 人中狼 发表于 2017-4-25 16:50
其他部分没看,不过每次进入中断都会有 static char rCnt = 0;  ,确定每次进入中断都能把数据包收完吗

不错  看着别的程序改的  ,没看好。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分