OpenEdv-开源电子网

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

突发奇想,给STM32板子 来个截屏功能如何?

[复制链接]

122

主题

294

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-14
在线时间
868 小时
发表于 2019-11-21 10:18:05 | 显示全部楼层 |阅读模式
SD卡,TFT屏 现在都是开发板的标配了,从SD卡上读个BMP文件来显示 是必备例程。 反过来,从显示屏(SDRAM)上将部分或全部显示内容截取下来,做成BMP文件,保存到SD卡中, 也有一定实际意义。  有没有类似的代码可参考?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-21 13:15:46 | 显示全部楼层
原子的示例程序早就实现了这个屏幕截图保存位bmp图片格式的功能,你可以去看看
回复 支持 反对

使用道具 举报

34

主题

388

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4090
金钱
4090
注册时间
2012-10-21
在线时间
642 小时
发表于 2019-11-21 13:18:09 | 显示全部楼层
貌似原子板子照相机实验,保存图片就是读取屏幕数据生成BMP,就是LZ说的这个,现成的代码看看
回复 支持 反对

使用道具 举报

122

主题

294

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-14
在线时间
868 小时
 楼主| 发表于 2019-11-25 08:55:00 | 显示全部楼层
最终解决办法,暴力截屏: SD 卡中存好一个 BMP 文件模板,直接用SDRAM中的显示数据转码后修改BMP文件像素数据部分,就可以实现截屏。

PC上还是24位BMP比较通用,而STM32 显示 常用RGB565 ,更快, 所以得转下码保存为24位色。

每个像素点都这样处理:
                               uint16_t temp;

                                temp=Dispbuf[--ptr]*0x100;
                                temp=temp+Dispbuf[--ptr];       

                                FileBuf[0]=(temp & 0xF800)>>(11-3);                        
                                FileBuf[1]=(temp & 0x1F)  <<(0 +3);
                                FileBuf[2]=(temp & 0x07E0)>>(5 -2);


Dispbuf 指向SDRAM ,  FileBuf 写入BMP 文件  像素数据部分。

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 08:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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