电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2283|回复: 0
收起左侧

请问下这个屏幕填充函数

[复制链接]

585

主题

910

帖子

4977

积分

四级会员

Rank: 4

积分
4977
发表于 2023-2-4 10:14:06 | 显示全部楼层 |阅读模式
void LCD_Fill(u16 xsta, u16 ysta, u16 xend, u16 yend, u16 color)
{
u16 i, j;
LCD_Address_Set(xsta, ysta, xend, yend); //设置光标位置
for (i = ysta; i <= yend; i++)
{
for (j = xsta; j <= xend; j++)
LCD_WR_DATA(color); //设置光标位置
}
}


/*16bit rgb 565*/
IRAM_ATTR void LCD_Fill(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t *color)
{
uint32_t size = (x2+1-x1)*(y2+1-y1)*2;
LCD_Address_Set(x1,y1,x2,y2);
LCD_DC_SET();//写数据
uint32_t send_cnt = size/480;//需要整行刷新多少行
uint32_t send_cnt2= size%480;//整行刷不完还剩多少字节


if(size==0)
{
printf("size=%u\r\n",size);
return;
}
for(int i=0;i<send_cnt;i++){
VSPI_data_x(&color[i*240],240*16);
}
if(send_cnt2!=0){
VSPI_data_x(&color[send_cnt*240],send_cnt2*8);
}
}


第一个填充函数我能理解,就是确定一块矩形区域,然后一个个填充相同颜色的像素点,
第二个我想了半天还是想不明白,传入的形参uint16_t *color应该是一个数组,那么这个数组结构是怎样的,
这个函数的填充过程是怎么样的,
VSPI_data_x(&color[i*240],240*16);
i*240是什么意思,那岂不是这个color数组得非常大,240*16是为了什么
实在是想不通,希望能有大佬帮我解惑
回复

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表