首页 > 其他分享 >野火书籍《STM32库开发指南》 第26章LCD代码勘误

野火书籍《STM32库开发指南》 第26章LCD代码勘误

时间:2023-04-03 12:46:04浏览次数:46  
标签:0x60000000 26 勘误 总线 FSMC STM32 地址 格式 Addr

 第26章LCD代码,P303代码写错。

原来的代码写错,因为是D/CX引脚,高电平(1)意味着数据,低电平(0)意味着命令:

#define FSMC_Addr_ILI9341_CMD     ((uint32_t)) 0x60020000
#define FSMC_Addr_ILI9341_DATA     ((uint32_t)) 0x60000000

因此应该将两个宏定义对换。

正确的为:

#define FSMC_Addr_ILI9341_CMD     ((uint32_t)) 0x60000000
#define FSMC_Addr_ILI9341_DATA     ((uint32_t)) 0x60020000

 

另外,我不明白为什么地址中0x60000000中的那个6不需要左移。

地址格式有两种, HADDR总线格式和 FSMC_A 总线地址格式。

书中讲解的是 STM32 是通过  HADDR总线来访问 FSMC 的,代码中表示的是HADDR总线格式的地址。

若要访问数据,

那就是要访问 FSMC_A 的地址格式的 0x6000000+2<<(16) = 0x60010000,

也就是访问HADDR总线格式的(0x6000000+2<<(16) )<1 = 0xC0020000,也就是整体左移1位(包括6)

但是书中公式为 0x6000000+2<<(16+1) = 0x60020000,只有指定的第16位左移了。

一个解释是:0xFFFF FFFF 这样的地址总共有32位,而具体的偏移的地址只有[0:25]/[1:25](26位),高位的[25:31](6位)不受影响。

此时的0x60000000中的6位于高6位当中,因此不需要左移。

标签:0x60000000,26,勘误,总线,FSMC,STM32,地址,格式,Addr
From: https://www.cnblogs.com/FBsharl/p/17282741.html

相关文章

  • 26.分割线
    一、基本参数1.定义:将实体(草图、实体、曲面、面、基准面、或曲面样条曲线)投影到表面、曲面或平面。它将所选面分割成多个单独面。可使用一个命令分割多个实体上的曲线。2.:分割类型:  1.轮廓:在一个圆柱形零件上生成一条分割线:  2.投影:将草图投影到曲面上,可形成以投......
  • stm32------使用keil和标准外设库进行stm32工程模板创建
    keil软件版本:V5.35.00st官网:STM32固件-意法半导体STMicroelectronics单片机型号:STM32F103VET6配置步骤大致为:新建本地文件夹--->新建工程--->添加本地文件到相应工程--->打开魔术棒进行配置--->添加main文件step1:新建本地工程文件夹(这里取名为template,因后续想要做为模板使......
  • stm32定时器笔记
    参考资料: STM32-定时器详解STM32F103C8T6的学习(5)——定时器TM32定时器之预分频器详解stm32之TIM-基本定时器应用实例(详细)STM32TIM定时时间的计算《STM32单片机应用基础与项目实践》......
  • 226. 翻转二叉树
    给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。classSolution{public:TreeNode*invertTree(TreeNode*root){if(root==nullptr)returnnullptr;else{TreeNode*node=root->left;root->left=root->righ......
  • stm32寄存器笔记
    参考资料:GPIO相关介绍STM32GPIO的配置寄存器(CRL、CRH)快速学习 stm32的寄存器都是32位的。每个GPIO口有7个寄存器来控制。从GPIO的 GPIO_TypeDef 定义中可以看出,分别是:CRL,CRH,IDR,ODR,BSRR,LCKR。 /***@briefGeneralPurposeI/O......
  • STM32F103的PB3、PB4引脚
    做了一个使用STM32F103RBT6的PCB,将PB3~9分配给了三位一体八段数码管,发现PB3、PB4对应的这两段映硬是不亮,检查寄存器是有值的,由于芯片是从另一块板子上面拆下来的,所以首先怀疑芯片故障,结果换了新的MCU还是同样的效果,于是上网搜索,原来PB3和PB4在系统复位时分别默认为JTag接口的SYS_J......
  • 基于docker和cri-dockerd部署k8sv1.26.3
    cri-dockerd是什么?在Kubernetesv1.24及更早版本中,我们使用docker作为容器引擎在k8s上使用时,依赖一个dockershim的内置k8s组件;k8sv1.24发行版中将dockershim组件给移除了;取而代之的就是cri-dockerd(当然还有其它容器接口);简单讲CRI就是容器运行时接口(ContainerRunt......
  • 每日总结--2023/3/26
    完成同一线路的查询:sevlet代码:packageServelet;importDButil.DButil;importbean.User;importcom.sun.net.httpserver.HttpServer;importjakarta.servlet.ServletException;importjakarta.servlet.annotation.WebServlet;importjakarta.servlet.http.HttpServlet;importj......
  • Springboot 系列 (26) - Springboot+HBase 大数据存储(四)| Springboot 项目通过 HBase
    ApacheHBase是Java语言编写的一款Apache开源的NoSQL型数据库,不支持SQL,不支持事务,不支持Join操作,没有表关系。ApacheHBase构建在ApacheHadoop和ApacheZookeeper之上。ApacheHBase:https://hbase.apache.org/HBase的安装配置,请参考“Springboot系列(24)-......
  • STM32F1时钟比设置值慢了10倍
    解决问题正在开发一个双脉冲发生器,主控MCU用到了STM32F103RBT6,写入程序后发现原本设置的1000ms的延时不起作用,没有任何响应,起初还以为式程序卡死了,在代码上检查了一会儿,并没有发现明显的错误,抱着试试的想法把1000ms的延时改成了100ms,发现有相应的现象了,但是LED闪烁的频率明显是对......