OpenEdv-开源电子网

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

STM32F103驱动ILI9341刷新过慢

[复制链接]

5

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2014-2-27
在线时间
67 小时
发表于 2022-9-24 17:31:14 | 显示全部楼层 |阅读模式
50金钱
我在使用STM32F103驱动ILI9341,2.4寸液晶屏时,刷新速度过慢,大概每秒才能刷新一次
以下是我的驱动
void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t chr,uint8_t size1,int color,int Bcolor)
{
        //x = X_MAX_PIXEL - x;
        //y = Y_MAX_PIXEL - y;

        uint16_t i,m,temp,size2,chr1;
        uint16_t x0=x,y0=y;
        if(size1==8)size2=6;
        else size2=(size1/8+((size1%8)?1:0))*(size1/2);  //得到字体一个字符对应点阵集所占的字节数
        chr1=chr-' ';  //计算偏移后的值
        for(i=0;i<size2;i++)
        {
                if(size1==8)
                {temp=asc2_0806[chr1];} //调用0806字体
                else if(size1==12)
                {temp=asc2_1206[chr1];} //调用1206字体
                else if(size1==16)
                {temp=asc2_1608[chr1];} //调用1608字体
                else if(size1==24)
                {temp=asc2_2412[chr1];} //调用2412字体
                else if(size1==48)
                {temp=asc2_4824[chr1];} //调用4824字体
                //else if(size1==100)
                //{temp=asc2_10050[chr1];} //调用10050字体 100号字体


                else return;
               

                for(m=0;m<8;m++)
                {
                        if(temp&0x01)draw_point(x,y,color);
                       
                        else draw_point(x,y,Bcolor);
                        temp>>=1;
                        y++;
                }
                x++;
                if((size1!=8)&&((x-x0)==size1/2))
                {x=x0;y0=y0+8;}
                y=y0;
        }
}

因为每次发送坐标导致速度很慢,我把他改成如下代码
void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t chr,uint8_t size1,int color,int Bcolor)
{
        //x = X_MAX_PIXEL - x;
        //y = Y_MAX_PIXEL - y;

        uint16_t i,m,temp,size2,chr1;
        uint16_t x0=x,y0=y;
        if(size1==8)size2=6;
        else size2=(size1/8+((size1%8)?1:0))*(size1/2);  //得到字体一个字符对应点阵集所占的字节数
        chr1=chr-' ';  //计算偏移后的值
        for(i=0;i<size2;i++)
        {
                if(size1==8)
                {temp=asc2_0806[chr1];} //调用0806字体
                else if(size1==12)
                {temp=asc2_1206[chr1];} //调用1206字体
                else if(size1==16)
                {temp=asc2_1608[chr1];} //调用1608字体
                else if(size1==24)
                {temp=asc2_2412[chr1];} //调用2412字体
                else if(size1==48)
                {temp=asc2_4824[chr1];} //调用4824字体
                //else if(size1==100)
                //{temp=asc2_10050[chr1];} //调用10050字体 100号字体


                else return;
                Lcd_SetRegion(x,y,x0,y0);//发送起始和结束坐标
                 //下面画点不再发送坐标

                for(m=0;m<8;m++)
                {
                        if(temp&0x01)draw_point2(color);
                       
                        else draw_point2(Bcolor);
                        temp>>=1;
                        y++;
                }
                x++;
                if((size1!=8)&&((x-x0)==size1/2))
                {x=x0;y0=y0+8;}
                y=y0;
        }
}

后发现现实不正常,请问是不是我的结束坐标设置错误导致的

附上图片

更改后如下
微信截图_20220924172914.png




微信图片_20220924172702.jpg

最佳答案

查看完整内容[请看2#楼]

后来我发现问题了,是中景园的驱动有问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2014-2-27
在线时间
67 小时
 楼主| 发表于 2022-9-24 17:31:15 | 显示全部楼层
后来我发现问题了,是中景园的驱动有问题。
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2022-9-25 10:05:05 | 显示全部楼层
应该是窗口不对,你看看Lcd_SetRegion(x,y,x0,y0);这里的x、y、x0、y0是多少,这应该是矩形区域的左上角与右下角座标,不会是x0=x,y0=y,得看接下来的描点的区域。

另外,建议优化一下,选择字体应提前,提到for之前,没必要在for里整那么多if。
还可以再优化,比如把文字当作图片,先在内存中绘制好,再整体复制到显示屏,并可利用DMA。
专治疑难杂症
回复

使用道具 举报

12

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2551
金钱
2551
注册时间
2017-12-16
在线时间
187 小时
发表于 2022-9-26 12:56:05 | 显示全部楼层
LcwSwust 发表于 2022-9-25 10:05
应该是窗口不对,你看看Lcd_SetRegion(x,y,x0,y0);这里的x、y、x0、y0是多少,这应该是矩形区域的左上角与 ...

经验之谈,这个是对我们这些新手最好的帮助!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 23:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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