OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5660|回复: 4

STM32F4利用串口一接收传感器不断传输过来的数据(一次大概30kb)然后在tftlcd上打印出来,但是用串口调试助手模拟传感器发过

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2018-9-7
在线时间
4 小时
发表于 2018-9-7 20:43:38 | 显示全部楼层 |阅读模式
1金钱
用串口调试助手模拟传感器发过来的数据(一次将近4000字节)时,当1s发一次时,LCD屏能正常显示,但是小于500ms发一次时,LCD显示一点点数据之后就卡死了,,,有哪位大哥能帮我解决一下下嘛


以下是代码
uint8_t buf[64][64]={0};
int i=0;
int x=0,y=0;
int j=0,a=0;
uint8_t ReceiveState=0;
int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);      //初始化延时函数
        USART11_init();                //初始化串口波特率为115200
        LED_Init();                                          //初始化LED
        LCD_Init();           //初始化LCD FSMC接口
        POINT_COLOR=RED;      //画笔颜色:红色
        LCD_Fill(0,0,480,800,GREEN);       
         while(1)
        {
                if(ReceiveState==1)
                {
                       
                        ReceiveState=0;
                        if(j!=0)
                        {
                                        for(i=0;i<=x;i++)
                                {
                                        LCD_ShowString(50,a,424,12,12,buf[i]);
                               
                                        a+=14;
                                        if(a==700)
                                        {
                                                a=0;
                                        }
                                }
                                x=0;
                                y=0;
                        }
                        else
                        {
                                for(i=0;i<x;i++)
                                {
                                        LCD_ShowString(50,a,424,12,12,buf[i]);
                                        a+=14;
                                        if(a==700)
                                        {
                                                a=0;
                                                LCD_Clear(GREEN);       
                                        }       
                                }
                                x=0;
                                y=0;
                        }
                }
        }
}

void USART1_IRQHandler()
{
        uint8_t Clear=Clear;
        if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {
                buf[x][y]=USART1->DR;
                USART_SendData(USART1,buf[x][y]);
                y++;
                if(y==64)
                {
                        x+=1;
                        y=0;
                }
                //等待串口发送完成,也就是串口发送数据寄存器为空
                //while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
        }
        else if(USART_GetITStatus(USART1, USART_IT_IDLE)!=RESET)
        {
                Clear=USART1->SR;
                Clear=USART1->DR;
                ReceiveState=1;       
        }
}


IMG_20180907_203432.jpg
IMG_20180907_203436.jpg
IMG_20180907_203458.jpg
IMG_20180907_203528.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-9-8 01:30:13 | 显示全部楼层
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2018-9-7
在线时间
4 小时
 楼主| 发表于 2018-9-8 16:21:20 | 显示全部楼层

是不是串口数据接收太快,而stm32tftlcd 的LCD_ShowString函数显示速率太慢而导致的呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-9-10 02:02:02 | 显示全部楼层
KANGKING 发表于 2018-9-8 16:21
是不是串口数据接收太快,而stm32tftlcd 的LCD_ShowString函数显示速率太慢而导致的呢

你可以依照这个思路来优化代码验证你的假设。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2018-9-13 06:07:06 来自手机 | 显示全部楼层
4000字节,500mS显示完毕,假设1屏能显示100字节,则需要刷40屏,也就是500毫秒内刷完40屏,一屏所需12.5mS,你按此方法计算是否足够时间刷屏就知道问题了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 00:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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