普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2593|回复: 2

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

[复制链接]

3

主题

5

帖子

38

积分

新手上路

Rank: 1

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

4

主题

156

帖子

516

积分

高级会员

Rank: 4

积分
516
发表于 2019-7-19 18:06:28 | 显示全部楼层
  1. int main()
  2. {

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

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

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

  34.                 }
  35.        
  36.         }/*while(1)
  37.         {
  38.                 i++;
  39.                 if(i%20==0)
  40.                 {
  41.                         led1=!led1;
  42.                 }
  43.                 delay_ms(10);
  44.         }*/
  45. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-5 03:32 , Processed in 0.087441 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表