_Jholder 发表于 2019-7-19 11:28:13

stm32 将通信传来的数显示在屏幕上

我现在遇到了一个问题,就是如何将电脑通过串口一传过来的数显示在屏幕上。
我将传过来的数放在RX_BUF[]数组中,用count来定位数组中的位置。我发现,它显示是不会覆盖的,就是说,你第一次显示123456,第二次想显示abc的时候,他会显示abc456。这时候我就需要一个lcd_clear,但是我不知道什么时候数据传完了,然后再lcd_clear。我试过用‘/’表示终止符,但是发现中断里面好像不可以加东西,包括清屏的,count置零的,一加的话连通信都会出问题。(我试过很多种思路,都不行,所以请大家帮忙看看,帮我解决最好,因为很多思路我一开始试的感觉成功,但仔细写在代码里面都不行)多谢大家了。

YXUN 发表于 2019-7-19 18:06:28

int main()
{

        u8 i=0;
        u8 len,t;
        SysTick_Init(72);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断优先级分组 分2组
        LED_Init();
        TFTLCD_Init();        //這句話無論在哪裏都不可以                               
        USART1_Init(9600);
        //sprintf(aa,"%s",RX_BUF);
        //TFTLCD_Init();
        //LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,12,(unsigned char*)RX_BUF);
//        LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,12,"1234567989");
        //LCD_Clear(color);
        LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"Hello World!");
        LCD_ShowFontHZ(10,30,"普中科技");
        //LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,12,RX_BUF);
        while(1)
        {

        if(USART_RX_STA&0x8000)
                {               
                       
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度

                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF);         //向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        USART_RX_STA=0;
                        USART_RX_BUF='\0';                         //结束                     
                        LCD_Fill(0,80,tftlcd_data.width-1,110,WHITE);   //填充
//                        LCD_Clear(WHITE);
                        LCD_ShowString(10,80,tftlcd_data.width,tftlcd_data.height,24,USART_RX_BUF);//显示

                }
       
        }/*while(1)
        {
                i++;
                if(i%20==0)
                {
                        led1=!led1;
                }
                delay_ms(10);
        }*/
}


_Jholder 发表于 2019-7-19 20:17:52

十分感谢{:2_37:}{:2_37:}
页: [1]
查看完整版本: stm32 将通信传来的数显示在屏幕上