初中生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-15
|
/**
* @brief Displays a pixel.
* @param x: pixel x.
* @param y: pixel y.
* @retval None
*/
void PutPixel(int16_t x, int16_t y)
{
if(x < 0 || x > LCD_PIXEL_WIDTH || y < 0 || y > LCD_PIXEL_HEIGHT)
{
return;
}
#if 1
LCD_DrawLine(x, y, 1, LCD_DIR_HORIZONTAL);
#else
{
/*RGB888*/
uint32_t Xaddress =0;
Xaddress = CurrentFrameBuffer + 3*(LCD_PIXEL_WIDTH*y + x);
*(__IO uint16_t*) Xaddress= (0x00FFFF & CurrentTextColor); //GB
*(__IO uint8_t*)( Xaddress+2)= (0xFF0000 & CurrentTextColor) >> 16; //R
}
#define LCD_FRAME_BUFFER ((uint32_t)0xD0000000)
static uint32_t CurrentFrameBuffer = LCD_FRAME_BUFFER;
CurrentFrameBuffer 这个值是怎么计算的?第一个像素点(0,0)的Xaddress =0xD005FA00(不知道是怎么来的)之后每个像素点地址差3个字节是没问题的,颜色值分量也没问题,但是
DMA2D_StartTransfer(); 函数执行完了就是一条竖线,求大神们指导。
|
|