野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10928|回复: 6

如何在显示屏上显示RGB565的像素数据

[复制链接]
发表于 2017-3-7 17:15:48 | 显示全部楼层 |阅读模式
已知 #define FSMC_LCD_ADDRESS      LCD_FRAME_BUFFER

#define LCD_FRAME_BUFFER       ((uint32_t)0xD0000000)
摄像头通过DMA,往这个地址传数据从而得到图像。
现在目的是想要知道  这个地址上(显示屏上)表达一个像素点的数据到底是什么。

写下代码                 LCD_ClearLine(LINE(1));
                        sprintf((char*)dispBuf, " 像素值%d)", FSMC_LCD_ADDRESS);                                       
                        /*输出帧率*/
                        LCD_DisplayStringLine_EN_CH(LINE(1),dispBuf);


1.此处 FSMC_LCD_ADDRESS是uint32_t ,应该使用什么占位符?
2.对于  FSMC_LCD_ADDRESS 考虑过  强制转化为指针(*XX),在间接引用 *(*XX)FSMC_LCD_ADDRESS,但是不知道怎么写
3.我图像处理,能否直接利用显示屏上这个地址FSMC_LCD_ADDRESS的值进行计算
以上代码的结果为  在屏幕左上角显示  像素值(-805306368)
回复

使用道具 举报

发表于 2017-3-7 17:26:21 | 显示全部楼层
地址使用%d就可以了

指针(uint16_t *)FSMC_LCD_ADDRESS = RGB565一个点的像素值

具体还是直接看看代码吧,代码里有画点,显示文字等各种函数,都是操作像素点
回复 支持 反对

使用道具 举报

发表于 2017-3-7 20:14:00 | 显示全部楼层
flyleaf 发表于 2017-3-7 17:26
地址使用%d就可以了

指针(uint16_t *)FSMC_LCD_ADDRESS = RGB565一个点的像素值

请问如果要将屏幕上所有的数据读出来存起来应该怎么做。
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-8 10:09:31 | 显示全部楼层
hongchuan95 发表于 2017-3-7 20:14
请问如果要将屏幕上所有的数据读出来存起来应该怎么做。

for(xxxxxxx)
{

temp【i】 =* (uint16_t *)(FSMC_LCD_ADDRESS+i );
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-25 09:45:55 | 显示全部楼层
hongchuan95 发表于 2017-3-7 20:14
请问如果要将屏幕上所有的数据读出来存起来应该怎么做。

感谢, 我也想问这个问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-25 11:28:39 | 显示全部楼层

我想得到摄像头的图像数据。
从摄像头例程开始改,我把你的这段赋值代码 在  DCMI_Cmd(ENABLE); DCMI_CaptureCmd(ENABLE); (DCMI采集数据)之后,在while(1)循环之前插入。  但是得到的数值打印到LCD上是0。  想要debug session单步调试很快就会程序崩溃。
1.如果从LCD上得到图像数据,这段代码的位置之类的有什么讲究?
2.这种方法是否不太可行,用DMA直接内存访问给到数组怎么写?
快要中期检查了,今天问题有点多,感谢你的问答!
回复 支持 反对

使用道具 举报

发表于 2017-10-26 16:42:48 | 显示全部楼层

写好的temp里面存的是像素的值吗?数组里是RGB三个值吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 00:02 , Processed in 0.032369 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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