OpenEdv-开源电子网

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

STM32F429LCD驱动函数求解!

[复制链接]

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2015-11-6 15:43:22 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void LCD_DrawChar(uint16_t Xpos, uint16_t Ypos, const uint16_t *c) { uint32_t index = 0, counter = 0, xpos =0; uint32_t Xaddress = 0; xpos = Xpos*LCD_PIXEL_WIDTH*3;//字节 Xaddress += Ypos; for(index = 0; index < LCD_Currentfonts->Height; index++) { for(counter = 0; counter < LCD_Currentfonts->Width; counter++) { if((((c[index] & ((0x80 << ((LCD_Currentfonts->Width / 12 ) * 8 ) ) >> counter)) == 0x00) &&(LCD_Currentfonts->Width <= 12))|| (((c[index] & (0x1 << counter)) == 0x00)&&(LCD_Currentfonts->Width > 12 ))) { /* Write data value to all SDRAM memory */ *(__IO uint32_t*) (CurrentFrameBuffer + (3*Xaddress) + xpos) = CurrentBackColor; } else { /* Write data value to all SDRAM memory */ *(__IO uint32_t*) (CurrentFrameBuffer + (3*Xaddress) + xpos) = CurrentTextColor; } Xaddress++; } Xaddress += (LCD_PIXEL_WIDTH - LCD_Currentfonts->Width); } }[/mw_shl_code]
这个代码没有看懂,这些变量不懂代表的含义
  xpos = Xpos*LCD_PIXEL_WIDTH*3;//字节
  Xaddress += Ypos;   这两个参数没有理解    Xadress是什么   还有Xpos  Ypos  xpos
另外那个循环里面为什么要/12*8       我理解为LCD_PIXEL_WIDTH*2为一行像素的字节数,但是不明白为什么要乘以Xpos,Xpos难道是行数?求详解!!!

电子人生!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-11-6 15:44:52 | 显示全部楼层
如何Xpos是行数,那么xpos是代表这个字符多占的字节数吗?
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-11-6 15:55:05 | 显示全部楼层
有人搞过没,求指导!卡在这里了
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-11-6 16:12:39 | 显示全部楼层
[mw_shl_code=c,true]void LCD_DrawPoint(uint16_t x,uint16_t y,uint32_t color) { *(uint32_t *)(CurrentFrameBuffer + 3*(x + (LCD_PIXEL_WIDTH*y)))=color; }[/mw_shl_code]

像这个代码我能理解    LCD_PIXEL_WIDTH*3*y    表示24bit像素 垂直方向字节数  在加上x方向的3*X   就是与起始地址的总字节数偏移量
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-11-6 16:16:47 | 显示全部楼层
那这里的  (3*Xaddress) + xpos  也是代表这个含义了吗?
相当于3*Ypos + Xpos*LCD_PIXEL_WIDTH*3 = 总的字节偏移量  (相当于起始字节)
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-11-6 16:17:41 | 显示全部楼层
可是这样的话  Xpos跟Ypos不就颠倒了   Xpos 相当于y   Ypos相当于x了?
电子人生!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 15:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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