RA8875的驱动现在已经加入硬件图形光标支持,可以在RealTouch中使用了。
首先,需要做一个鼠标光标图像数据,下面是取了一个仿windows光标的数据:const uint8_t cursor[256]={
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa5,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x91,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x41,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa4,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x90,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x40,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0xa4,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0x90,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0x40,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xa9,0x00,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xa4,0x00,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0x90,0x00,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0x40,0x00,0x00,0x01,
0xaa,0xaa,0xaa,0xa9,0x00,0x00,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0x55,0x00,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0x40,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0x90,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0x40,0x00,0x01,
0xaa,0xaa,0xaa,0xaa,0xaa,0x40,0x15,0x01,
0xaa,0xaa,0xaa,0xaa,0xa9,0x00,0x1a,0x41,
0xaa,0xaa,0xaa,0xaa,0xa9,0x00,0x6a,0x91,
0xaa,0xaa,0xaa,0xaa,0xa4,0x00,0x6a,0xa5,
0xaa,0xaa,0xaa,0xaa,0xa4,0x01,0xaa,0xa9,
0xaa,0xaa,0xaa,0xaa,0xa0,0x01,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0x90,0x06,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0x90,0x06,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0x90,0x0a,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0x90,0x1a,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0xa5,0x6a,0xaa,0xaa,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
};
因为RA8875的光标数据是由两个自定义颜色,一个屏幕背景色,一个屏幕背景色反色4种颜色组成的,每个颜色用2个位表示,每个字节代表4个点的颜色,所以32x32的光标图像需要用256个字节(32X32X2/8),这个取模比较难搞,这里提供一个经过笔者好久才制作好的3色光标,和windows的一样。
下面是在RA8875中载入图形光标的函数:static void _set_mouse_image(const uint8_t *mouse_img)
{
uint32_t i,j;
LCD_write_reg(0x84, 0xFF);//GCC0
LCD_write_reg(0x85, 0x00);//GCC1
LCD_write_reg(0x41, 2<<2);//write to gc
_set_write_cursor(0, 0);
LCD_CmdWrite(MRWC);//set CMD02 to prepare data write
for(i=0;i<32;i++)
{
for(j=0;j<8;j++)
{
LCD_DataWrite(*mouse_img++);
}
}
LCD_write_reg(0x41, (1 << 7) | (0 <<2 ));//display cursor
}
接下来就是设置光标位置的函数了,如下:
```static void _set_mouse_position(uint32_t X, uint32_t Y)
{
LCD_CmdWrite(0x81);
LCD_DataWrite(X>>8);
LCD_CmdWrite(0x80);
LCD_DataWrite(X);
}```
附件中提供一个开启硬件光标的RA8875驱动,可以直接替换RealTouch主程序中的RA8875.c文件,这样烧录到RealTouch就是可以看到光标了。在finsh中使用set_mouse_XY(X,Y)可以进行设置光标的位置。因为还不懂如何与RTGUI关联,所以暂时提供这个,等待各位制作GUI的大神们加入RTGUI中,支持硬件光标。
下载附件 ra8875.rar