野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5509|回复: 3

求助!!LCD部分Read_Pixel_Format

[复制链接]
发表于 2022-10-30 11:10:24 | 显示全部楼层 |阅读模式
视频里为什么会把0x6000 0000这个16进制数使用__IO uint16_t*来强制转换,我试过了使用__IO uint32_t*,但是失败了返回值是0x0,4*8不是等于32位吗,用uint16_t难道不会直接舍弃高位???
我用的是指南者开发板。有没有知道的兄弟救救我


回复

使用道具 举报

发表于 2022-11-2 13:42:29 | 显示全部楼层
具体哪个代码部分
回复 支持 反对

使用道具 举报

发表于 2023-2-12 16:25:49 | 显示全部楼层
0x6000 0000表示的是地址,使用__IO uint16_t*进行强制转换,并不是将这个地址转换成16位,而是将它转换为指向16位数据的一个指针,这是我的理解,不知道对不对。

我也遇到相同的问题:用__IO uint16_t*强制转换0x60000000就能给lcd写入命令,用__IO uint32_t*就不可以,但是不知道为什么

而且我还发现:(__IO uint16_t*)0x6000 0000+(__IO uint32_t*)0x6002 0000的组合不会出问题,把(__IO uint16_t*)换成(__IO uint32_t*),命令就不能写入

有没有大佬能帮忙解答一下疑惑,或者楼主有没有搞明白,分享下答案,谢谢
回复 支持 反对

使用道具 举报

发表于 2023-2-12 16:38:59 | 显示全部楼层
WishWish 发表于 2022-11-2 13:42
具体哪个代码部分

指南者开发板  FSMC控制LCD(ili9341)里面 bsp_ili9341_lcd.h 文件中
#define                 ILI9341_CMD_ADDR                  (__IO uint16_t*)(0x60000000)
#define                 ILI9341_DATA_ADDR                  (__IO uint16_t*)(0x60020000)
把  ILI9341_CMD_ADDR  后面的 (__IO uint16_t*) 换成 (__IO uint32_t*),命令就不能写入LCD了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 08:03 , Processed in 0.038491 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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