求助大神关于 STM32与DGUS屏通信问题

2019-07-21 06:37发布

STM32能给屏传输数据,而屏发出的指令32收不到   用电脑串口调试的时候   能接收到屏发的指令,用电脑或另一个32 通过串口发送同样的指令32也能收到,波特率设置也对,实在是不知从何下手了    请各位大神指点迷津
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
oyixi001
2019-07-21 21:23
void USART3_IRQHandler(void)                        //串口3中断服务程序,用于和触摸屏通讯。
{
    uint8_t Res;
    static uint8_t US_STA = 0;         //用于检测是否已经收到帧头,未收到为0,收到A8为1,收到8A未2。
    static uint8_t buffer_num = 0;
    if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
    {
        Res = USART_ReceiveData(USART3);               //读取接收到的数据
        if(!USART3_RX_STA)
        {
            if(US_STA == 0)
            {
                if(Res == 0xA8) US_STA = 1;         //接收到了0xA8,US_STA=1
            }
            else if(US_STA == 1)
            {
                if(Res == 0x8A)
                {
                    US_STA = 2;                     //接收到了0x8A,US_STA=2
                    buffer_num = 0;
                }
                else US_STA = 0;                    //A8后面不是8A则全部重新接收。
            }
            else if(US_STA == 2)
            {
                USART3_RX_Buffer[buffer_num] = Res;
                if(buffer_num++ == USART3_RX_Buffer[0])
                {
                    buffer_num = 0;
                    USART3_RX_STA = 1;              //当接收数量等于缓存0位置时,则接收完成。
                    US_STA = 0;
                }
            }
        }
    }
}

用这个中断函数收就行了,A8  8A是我迪文屏的2位帧头,根据你自己设置的改一下就好。
另外你说电脑能收到屏的数据,那就是232电平喽。你接单片机有没有转3.3V TTL?

一周热门 更多>