STM32F429LCD驱动函数求解!

2019-07-21 01:08发布

[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难道是行数?求详解!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
翱翔云端的鸟
1楼-- · 2019-07-21 02:09
如何Xpos是行数,那么xpos是代表这个字符多占的字节数吗?
翱翔云端的鸟
2楼-- · 2019-07-21 07:06
 精彩回答 2  元偷偷看……
翱翔云端的鸟
3楼-- · 2019-07-21 12:41
[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   就是与起始地址的总字节数偏移量
翱翔云端的鸟
4楼-- · 2019-07-21 14:41
那这里的  (3*Xaddress) + xpos  也是代表这个含义了吗?
相当于3*Ypos + Xpos*LCD_PIXEL_WIDTH*3 = 总的字节偏移量  (相当于起始字节)
翱翔云端的鸟
5楼-- · 2019-07-21 15:46
可是这样的话  Xpos跟Ypos不就颠倒了   Xpos 相当于y   Ypos相当于x了?

一周热门 更多>