【LTDC】在 RGBLCD 屏上实现任意位置画点和读点

news/2025/10/24 17:50:59/文章来源:https://www.cnblogs.com/Skyrim-sssuuu/p/19163646

前言

此篇文章仅作笔记分享,内容来源为:

【正点原子】全是干货 | 手把手教你学STM32的LTDC

这篇文章的目的就是熟悉在 RGBLCD 上的绘图操作,了解如何往显存中对应的位置写数据。

绘图实质

  1. 由于我们的屏幕是 ATK 4.3 800 * 480,所以会对应在 SDRAM 中按顺序开辟一个大小为 800 * 480 * 2 的内存,其中 2为一个像素的大小(RGB565一个像素点为两个字节)。
  2. 帧缓冲的起始地址就是 SDRAM 中为屏幕所开辟的第一个内存地址(S_Addr)。
  3. 对于定位(x, y),我们就是要计算某个点对于显存首地址的内存偏移是多少,其中分为了行上的 a 距离,和列上的 b 距离。
  4. 横屏:位置 = (width * y + x) * 2,其中 width 是宽度 800,x 是列数(单位是像素),y 是行数(单位是像素),2是单个像素大小)。
    (uint16_t*)((uint32_t)s_addr + pixsize * (pwidth * y + x))
  5. 竖屏:位置 = (width * (height - x - 1) + y) * 2,其中 width 是宽度 800,其中 height 是宽度 480,x 是行数(单位是像素),y 是列数(单位是像素),2是单个像素大小)。
    (uint16_t*) ((uint32_t)s_addr + pixsize * (pwidth * (pheight - x - 1) + y))

image

程序

LTDC 程序

点击查看代码
__attribute__((section (".RAM_SDRAM"))) uint16_t framebuf[pHeight][pWidth];#define LTDC_ADDR	0xC0000000/* 常用画笔颜色 */
#define WHITE           0xFFFF      /* 白色 */
#define BLACK           0x0000      /* 黑色 */
#define RED             0xF800      /* 红色 */
#define GREEN           0x07E0      /* 绿色 */
#define BLUE            0x001F      /* 蓝色 */ 
#define MAGENTA         0xF81F      /* 品红色/紫红色 = BLUE + RED */
#define YELLOW          0xFFE0      /* 黄色 = GREEN + RED */
#define CYAN            0x07FF      /* 青色 = GREEN + BLUE */  /* 非常用颜色 */
#define BROWN           0xBC40      /* 棕色 */
#define BRRED           0xFC07      /* 棕红色 */
#define GRAY            0x8430      /* 灰色 */ 
#define DARKBLUE        0x01CF      /* 深蓝色 */
#define LIGHTBLUE       0x7D7C      /* 浅蓝色 */ 
#define GRAYBLUE        0x5458      /* 灰蓝色 */ 
#define LIGHTGREEN      0x841F      /* 浅绿色 */  
#define LGRAY           0xC618      /* 浅灰色(PANNEL),窗体背景色 */ 
#define LGRAYBLUE       0xA651      /* 浅灰蓝色(中间层颜色) */ 
#define LBBLUE          0x2B12      /* 浅棕蓝色(选择条目的反色) */ /* 宽度和高度 */
#define pWidth	800
#define pHeight	480/* 横屏和竖屏 */
#define HOR	true	// 横屏
#define VER	false	// 竖屏/* RGB类型 */
#define RGB888		1
#define RGB565		2
#define RGB_TYPE	RGB565/* 像素大小 */
#if RGB_TYPE == RGB888
#define PIXSIZE 3	// 单个像素大小
#endif
#if RGB_TYPE == RGB565
#define PIXSIZE 2	// 单个像素大小
#endifvoid ltdc_draw_point(uint16_t x, uint16_t y, uint32_t color)
{if (HOR) {	// 横屏*(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * y + x)) = color;} else {	// 竖屏*(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * (pHeight - x - 1) + y)) = color;}
}uint32_t ltdc_read_point(uint16_t x, uint16_t y, uint32_t color)
{if (HOR) {	// 横屏return *(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * y + x)) = color;} else {	// 竖屏return *(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * (pHeight - x - 1) + y)) = color;}
}

main() 测试程序

点击查看代码
	ltdc_draw_point(100, 100, RED);ltdc_draw_point(110, 110, RED);ltdc_draw_point(120, 120, RED);ltdc_draw_point(130, 130, RED);ltdc_draw_point(140, 140, RED);ltdc_draw_point(150, 150, RED);ltdc_draw_point(160, 160, RED);ltdc_draw_point(170, 170, RED);ltdc_draw_point(180, 180, RED);ltdc_draw_point(190, 190, RED);ltdc_draw_point(200, 200, RED);printf("pixcolor = %x \r\n", ltdc_read_point(140, 140, RED));

测试结果

image

image

博客导航

博客导航

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年阳台壁挂太阳能厂家权威推荐榜单:分体式阳台太阳能/阳台壁挂太阳能热水器/分体式阳台太阳能源头厂家精选

在绿色能源革命席卷全球的今天,阳台壁挂太阳能正以其空间利用率高、安装便捷的优势,成为城市家庭清洁能源解决方案的新宠。 随着城市化进程加快和环保意识增强,阳台壁挂太阳能市场正迎来爆发式增长。根据QYResearch…

使用C# 控制ethercat从站设备

C#通过SOEM+Leal.Core.Net.EtherCAT开发EtherCAT主站 https://www.claves.cn/archives/9651 C# 通过EtherCAT 控制伺服电机(无需板卡或PLC) https://blog.csdn.net/qq_39502959/article/details/145719484QQ群:674210…

0273-GRPC-tonic 进行编解码

环境Time 2022-12-11 WSL-Ubuntu 22.04 tonic 0.8前言 说明 参考:https://github.com/hyperium/tonic/tree/master/examples/src/helloworld 目标 使用 tonic 来处理 protobuf 编码和解码。 user.proto 文件 syntax =…

0271-GRPC-prost 带长度的编解码

环境Time 2022-12-10 WSL-Ubuntu 22.04 prost 0.11前言 说明 参考:https://docs.rs/prost-build/latest/prost_build/ 目标 在前一节的基础上,使用 prost 进行带长度的编解码。 user.proto 文件 syntax = "prot…

2025 年坡口机源头厂家最新推荐排行榜:欧盟 CE 认证企业领衔,含 15 年工业服务经验品牌,自走式/自动/板材/管道坡口机厂家推荐

引言 为解决工业制造企业选购坡口机时面临的品牌筛选难、品质无保障等问题,中国机械工业金属切削工具协会联合行业权威检测机构,开展了 2025 年度坡口机源头厂家测评工作。本次测评覆盖全国 32 个省市共 89 家坡口机…

0270-GRPC-使用 prost 解码

环境Time 2022-12-10 WSL-Ubuntu 22.04 prost 0.11前言 说明 参考:https://docs.rs/prost-build/latest/prost_build/ 目标 在前一节的基础上,使用 prost 进行解码。 user.proto 文件 syntax = "proto3"; …

完整教程:Java开发者进阶之路

完整教程:Java开发者进阶之路pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

python+request+unittest自动化测试

python+request+unittest自动化测试 案例:第一种方法,执行全部的用例 import unittest import requests class Cms(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.s=requests.Session(…

国标GB28181平台EasyGBS视频调阅效果在跨域安防监控中的核心应用

国标GB28181平台EasyGBS视频调阅效果在跨域安防监控中的核心应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

2025 年保温涂料厂家最新推荐排行榜:聚焦技术专利与管理体系认证的优质品牌耐高温/防火耐热/防腐/纳米介孔微珠中空粒子保温涂料公司推荐

引言 在工业升级与建筑节能需求日益增长的当下,保温涂料作为关键节能材料,市场需求持续攀升,但行业乱象却给用户选购带来极大困扰。部分供应商缺乏核心技术,产品保温性能差、耐久性不足,导致用户能耗过高、频繁更…

实战练习:小软件页面间跳转传值 子页面数据渲染

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年云南独立成团游公司权威推荐榜单:云南旅游团/云南私享之旅/云南专属行程游源头公司精选

面对云南旅游市场个性化需求的爆发式增长,独立成团服务正成为品质旅行者的首选。 据最新行业数据显示,2025年云南旅游市场中,6人以下精品小团需求同比增长175%,私密性、灵活性与深度体验成为游客的核心关注点。 在…

2025 年气凝胶生产厂家最新推荐排行榜:含气凝胶毡 / 粉 / 隔热板 / 保温罩 / 陶瓷板品牌,优质厂家推荐

引言 在环保节能与智能化技术飞速发展的当下,气凝胶作为纳米绝热保温材料的核心品类,在钢铁、焦化、化工等领域需求激增。为帮助企业精准筛选合作伙伴,中国绝热节能材料协会联合行业专家开展 2025 年度气凝胶厂家测…

2025年5.5KW工业吸尘器厂家权威推荐榜单:380V防爆吸尘器/7.5KW工业吸尘器/水浴式吸尘器源头厂家精选

工业清洁设备行业正迎来技术升级浪潮,5.5KW大功率工业吸尘器凭借其卓越的清洁效率和稳定的工作性能,已成为制造业企业的首选清洁解决方案。 在工业4.0和智能制造加速推进的背景下,精密制造、化工、医药等领域对生产…

102302143郑泽雄第一次作业

1.用requests和BeautifulSoup库方法爬取大学排名信息。 核心代码及结果由图可知,所需信息在table的tbody下的 标签,然后逐一排查寻找需要的5个标签即可。 心得 从这道题我掌握了如何使用正则化表达式匹配中文序列,当…

2025 年兰州凯文中学推荐:兰州凯文中学,二十载深耕民办教育 双师赋能全维育人 以低进高出成效书写成长答卷

行业背景 当前,我国普通高中教育进入高质量发展新阶段,教育部《普通高中学校办学质量评价指南》明确提出 “坚持以评促建、强化增值评价” 的导向,推动民办教育朝着特色化、优质化方向转型。兰州市积极推进民办中学…

详细介绍:Uvicorn - Python ASGI Web 服务器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

OpenEuler 22.03 手动升级 OpenSSH 至 10.2p1 完整方案

本文档提供在 OpenEuler 22.03 LTS 系统上,将 OpenSSH 手动升级至 10.2p1 版本的完整、安全的操作方案。方案包含准备、升级、验证、回滚四个核心环节,并重点集成了对 SELinux 策略的自动化处理。 1、方案概述项目说…

配置GOPRIVATE引用私有仓库

目录核心配置步骤1. 设置GOPRIVATE环境变量2. 配置Git认证验证与依赖管理解决常见问题团队协作与CI/CD配置高级场景与总结配置 GOPRIVATE 环境变量是解决Go语言引用私有仓库依赖问题的关键核心配置步骤1. 设置GOPRIVAT…

2025年3d全息投影生产厂家权威推荐榜单:全息投影展厅/全息投影沙盘/全息投影源头厂家精选

随着数字视觉技术的快速发展,3D全息投影已从科幻概念走向成熟应用,成为展览展示、商业广告、教育医疗等领域的重要工具。据行业数据显示,2024年全球全息投影市场规模突破85亿元,预计2025年将增长至100亿元,年复合…