在研究原子的程序时,有下面3段
1.
typedef struct
{
vu16 LCD_REG;
vu16 LCD_RAM;
} LCD_TypeDef;

#define LCD_BASE ((u32)(0x6C000000 | 0x000007FE))
#define LCD ((LCD_TypeDef *) LCD_BASE)

2.

void LCD_WR_REG(u16 regval)
{
LCD->LCD_REG=regval;
}
void LCD_WR_DATA(u16 data)
{
LCD->LCD_RAM=data;
}

3.
LCD_WR_REG(0xED);
LCD_WR_DATA(0x64);

其中涉及到了结构体(结构体是一种数据类型)、指针、寻址、FSMC、TFT屏,该段程序实际是定义TFT屏(该屏是8080的16位并口模式)的RS标志线为地址0x000007FE:
1.FSMC可以控制外部 SRAM,SRAM有地址线(如 A0~A18)、数据线(如 D0~D15)、写信号(WE)、读信号(OE)、片选信号(CS),如果 SRAM 支持字节控制,那么还有 UB/LB 信号;TFTLCD有数据线(如 D0~D15)、WR、RD、CS、RST(复位,可以硬件实现) 、RS、BL(背光控制),实际用D0~D15、WR、RD、 CS、RS即可控制TFT。向FSMC寻址的地址写数据,则FSMC的数据线就输出该数据,这样则FSMC可以控制TFT了,由于FSMC有地址线,TFT没有地址线,但是有RS信号线,RS是数据/命令信号线,RS=0时表示TFT接收的是命令,RS=1时表示TFT接收的是数据,那么FSMC只要地址线的任何一根线连接了RS都可以控制TFT了:语句#define LCD_BASE ((u32)(0x6C000000 | 0x000007FE))中0x6C000000是fsmc4个管理块中的Bank1的分区4的起始地址,对应地址信号全为0,由于使用了A10连接TFT的RS线,为了方便寻址连续,则A10为低电平时的最大寻址地址是0x000007FF,而现在为什么是0x000007FE,是因为FSMC是由HADDR控制的,HADDR是内部AHB地址总线,当Bank1接的是16位宽度存储器的时候:HADDR[25:1]对应FSMC-A[24:0],相当于HADDR[25:1]右移一位,HADDR[25:0]的26根线,才能寻址64M地址,所以A10接在RS上相当于HADDR[11]接在RS上,即A10为高电平时的最大寻址地址是0x00000FFF,现在((LCD_TypeDef *) LCD_BASE)将转换成结构体地址指针,指向结构体第一个成员,即首地址是((u32)(0x6C000000 | 0x000007FE))即0x6C0007FE即此时HADDR[11:0]为011111111110即0x7FE,H[11]低电平即A10低电平,为使寻址连续,所以H[11]高电平即A10高电平时可以对应HADDR[11:0]为100000000000,即0x800,这样FSMC寻址0x6C0007FE时,则RS为低电平,向0x6C0007FE 写入数据,则FSMC的数据线向TFT传送该数据,则TFT认为该数据为命令;FSMC寻址0x6C000800时,则RS为高电平,向0x6C000800 写入数据,则FSMC的数据线向TFT传送该数据,则TFT认为该数据为数据;另外0x6C0007FE与0x6C000800差了两个字节,是因为FSMC使用了16位模式,数据总线是16位,则地址必须占用两个字节才能向地址写数据。实际FMSC控制TFT并没有真正寻TFT的地址空间, FSMC只是通过自身的地址线控制RS,向该地址写数据就是向数据线传输数据,TFT通过RS的高低电平认定接收来的数据是数据还是命令。地址不一定是0x6c0007FE和6c000800,只要是控制A10高低电平的地址都可以,也不一定要连续地址,可以分别定义0x6c0007FE和0x6c000800;使用了FSMC功能后,其它的地址线最好不再作为别的功能的IO使用,但是在不影响RS的电平的情况下灵活运用其他地址线还是有可能,比如我使A2输出高电平,则可以使地址寻址0x6c000808,而必须保证此时的A10不会变化。。。

stm学习---FSMC控制TFT屏程序1相关推荐

  1. ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像

    ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像 拍照采用安信可的ESP32-CAM,显示屏采用2.2寸,TFT SPI 240x320屏幕,使用stm32 ...

  2. STM32 - 使用FSMC控制LCD

    1. FSMC简介 STM32F1 系列芯片使用 FSMC 外设来管理扩展的存储器,FSMC 是 Flexible Static Memory Controller 的缩写,译为灵活的静态存储控制器. ...

  3. c语言tft屏浮点数显示,编个可显示中文的TFT程序

    近几个月有点空闲时间,看到Arduino比较好玩,就开始学习,近来想做个数控电源,想用Arduino  por  mini做主控,TFT屏做显示,找到一个ILI9341的库,但该库只支持英文字符显示, ...

  4. Smart200控制两台V90伺服,绝对定位和速度控制,有屏程序,PN通信。 注释清楚

    Smart200控制两台V90伺服,绝对定位和速度控制,有屏程序,PN通信. 注释清楚,PDF调试说明,易懂. YID:4630644263796376TB

  5. Smart200控制两台V90伺服,绝对定位和速度控制,有屏程序,PN通信

    Smart200控制两台V90伺服,绝对定位和速度控制,有屏程序,PN通信 注释清楚,PDF调试说明,易懂 YID:6930644263796376

  6. micropython驱动tft_nRF52832-Bluefruit52学习之MicroPython开发(5)-- TFT屏驱动ST7789

    nRF52832技术交流群:680723714 nRF52832-Bluefruit52核心板详细介绍: https://blog.csdn.net/solar_Lan/article/details ...

  7. 前端学习(2641):懂代码之header表头页之控制全屏显示

    <!-- 全屏显示 控制全屏显示第一步 --><div class="btn-fullscreen" @click="handleFullScreen& ...

  8. STM32实战总结:HAL之FSMC控制TFT-LCD

    什么是FSMC? FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术.在外部存储器扩展方面具有独特的优势, ...

  9. Linux 学习笔记(借鉴黑马程序员Linux课程)

    Linux视频课程 简介 Linux诞生于1991年,由林纳斯·托瓦兹在21岁时完成.此后成为最为流行的服务器操作系统之一. Linux内核和系统发行版 由Linux系统内核和系统级应用程序两部分组成 ...

最新文章

  1. 《全球人工智能产业地图》发布(附PPT图片)
  2. Nginx在mvvm模式中的使用
  3. top与bottom、left与right的优先级
  4. django_rest_framework之GenericAPIView(二)之搜索、排序、分页讲解
  5. C++——auto_ptr类
  6. 多任务学习模型之ESMM介绍与实现
  7. MySQL JSON 类型数据操作
  8. myEclipse中的web项目直接引入到eclipse中运行
  9. kotlin特性之object、apply用法总结
  10. python如何退出模块_如何将一个 Python 函数进行模块化封装
  11. JavaScript 邮件正则练习
  12. 传入一个月份获取该月的统计信息
  13. mmsi是代表船舶什么_海上移动业务识别码(MMSI)是一种九位识别码,主要分配给()在DSC和NBDP通信中相互识别身份是使用。...
  14. Opencv最新版本Opencv3.3.0集成了DNN神经网络模块
  15. 云计算数据中心运维管理的五大重点
  16. dell r630 配置raid_Dell服务器设置Raid5
  17. 【漏洞复现】shiro 反序列化 (CVE-2016-4437)
  18. 鸿蒙系统专利申请,华为在欧盟申请HarmonyOS专利 或为鸿蒙系统的英文名称
  19. 记vue+drf前后端分离学习过程(2)
  20. 使用谷歌扩展程序出现停用情况

热门文章

  1. 用Python开发Android app
  2. 微信公众号测试账号的网址
  3. 国考教师资格《信息技术学科知识与教学能力》(初中)考试大纲
  4. A股历史行情数据 API 接口
  5. 28. 文件挂载,卸载,mount,语法选项示例,挂载光盘,挂载分区,挂载u盘,挂载移动硬盘,卸载,fuser等使用和示例
  6. 基于企业级业务架构的需求管理与软件开发的供求曲线
  7. 大学计算机基础-题库刷题-精选
  8. 火焰特效机市场前景分析及行业研究报告
  9. qq群 voiceover_如何让OS X使用VoiceOver助手向您朗读屏幕
  10. ios测试版软件永久,ios10测试版