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