打印

串口接受数据

[复制链接]
587|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
发送一串十六进制数【5A A5 06 83 12 00 01 00 02】到串口   32接收并保存到数组  但总是达不到想要的效果(通过识别最后的两位02   来控制灯的亮灭)求各位大神指点迷津   代码如下void USART1_IRQHandler(void)                        //串口3中断服务程序,用于和触摸屏通讯。
{
        extern int STOP;
    uint8_t Res;
    static uint8_t US_STA = 0;         //用于检测是否已经收到帧头,未收到为0,收到5a为1,收到a5为2。
    static uint8_t buffer_num = 0;
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
        Res = USART_ReceiveData(USART1);               //读取接收到的数据
        if(!USART_RX_STA)
        {
            if(US_STA == 0)
            {
                if(Res == 0x5A) US_STA = 1;         //接收到了0x5a,US_STA=1
            }
            else if(US_STA == 1)
            {
                if(Res == 0xA5)
                {
                    US_STA = 2;                     //接收到了0xA5,US_STA=2
                    buffer_num = 0;
                }
                else US_STA = 0;                    //5A后面不是A5则全部重新接收。
            }
            else if(US_STA == 2)
            {
                USART_RX_BUF[buffer_num] = Res;
                if(buffer_num++ == USART_RX_BUF[0])
                {
                    buffer_num = 0;
                    USART_RX_STA = 1;              //当接收数量等于缓存0位置时,则接收完成。
                    US_STA = 0;
                                                                        STOP=1;
                }
            }
        }
    }
}






while(1)
        {

if(STOP==1)
{
//        printf("%x\r\n",USART_RX_BUF);
                switch(USART_RX_BUF[8])
                {
                        case 0x02:
                        
                                LED2_1;        printf("OPEN\r\n");printf("%x\r\n",USART_RX_BUF[8]);memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));USART_RX_STA=0;
                                break;
                        case 0x01:
                                LED2_0;        
                                printf("CLOSE\r\n");printf("%x\r\n",USART_RX_BUF[8]);memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));USART_RX_STA=0;
                                        break;
                        default : break;
                }
        }
else
        printf("DEFAULT\r\n");
}

相关帖子

沙发
零三翟邢止胃| | 2019-3-14 08:54 | 只看该作者
可以的啊!!!!!!

使用特权

评论回复
板凳
xuyaqi| | 2019-3-14 09:48 | 只看该作者
总是达不到想要的效果,说明一下具体问题。

使用特权

评论回复
地板
长发飘飘不及腰|  楼主 | 2019-3-14 10:03 | 只看该作者
xuyaqi 发表于 2019-3-14 09:48
总是达不到想要的效果,说明一下具体问题。

已经解决了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

粉丝