7.STM32的中断体系和FSMC控制LCD

转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂
第一部分、章节目录
3.7.1.STM32的NVIC和起始代码中的ISR
3.7.2.STM32的外部中断
3.7.3.标准库中NVIC模块分析
3.7.4.标准库中外部中断模块分析
3.7.5.外部中断程序的移植和调试1
3.7.6.外部中断程序的移植和调试2
3.7.7.外部中断程序的移植和调试3
3.7.8.什么是FSMC
3.7.9.FSMC如何操控LCD
3.7.10.FSMC控制LCD的细节
3.7.11.PZ6806L开发板上FSMC接口LCD驱动移植1
3.7.12.PZ6806L开发板上FSMC接口LCD驱动移植2
3.7.13.PZ6806L开发板上FSMC接口LCD驱动移植3

第二部分、章节介绍
3.7.1.STM32的NVIC和起始代码中的ISR
本节讲解NVIC的数据手册和起始代码汇编中的异常向量表的设置和weak声明的ISR。
3.7.2.STM32的外部中断
本节讲解STM32的外部中断EXTI的数据手册和寄存器细节。
3.7.3.标准库中NVIC模块分析
本节分析NVIC的标准库源码,标准库中和NVIC有关的配置都在这里了。
3.7.4.标准库中外部中断模块分析
本节分析标准库中外部中断部分,主要的API和数据结构分析都在这里了。
3.7.5.外部中断程序的移植和调试1
本节开始将ARM3.0开发板上的外部中断例程移植到PZ6806L上的工作,本节主要是例程的理解。
3.7.6.外部中断程序的移植和调试2
本节接着将ARM3.0开发板上的外部中断例程移植到PZ6806L上的工作,主要是移植编写。
3.7.7.外部中断程序的移植和调试3
本节接着将ARM3.0开发板上的外部中断例程移植到PZ6806L上的工作,主要是调试和测试。
3.7.8.什么是FSMC
本节讲解STM32的FSMC模块,主要讲解了FSMC的作用和优缺点,目的是让大家从宏观上理解为什么要用FSMC,FSMC在哪些地方可以用到。
3.7.9.FSMC如何操控LCD
本节讲解FSMC控制LCD的原理,主要是LCD的8080接口特征,以及FSMC的NOR/PSRAM接口的特征。
3.7.10.FSMC控制LCD的细节
本节讲解主板原理图、LCD模组原理图接法细节,并且确认很多细节参数,这些对后面程序移植都很重要。
3.7.11.PZ6806L开发板上FSMC接口LCD驱动移植1
本节开始移植FSMC控制LCD的代码,边移植边讲解边测试。
3.7.12.PZ6806L开发板上FSMC接口LCD驱动移植2
本节继续移植和编写代码。
3.7.13.PZ6806L开发板上FSMC接口LCD驱动移植3
本节完成移植并作测试,解决bug,看到实验现象等。

第三部分、随堂记录
3.7.1.STM32的NVIC和起始代码中的ISR
3.7.1.1、NVIC的关键点
(1)数据手册中相关部分浏览
(2)地址映射时0地址映射到Flash或SRAM
(3)中断向量表可以被人为重新映射,一般用来IAP中
(4)STM32采用一维的中断向量表
(5)中断优先级设置有点复杂,后面细说
3.7.1.2、起始代码中的ISR
(1)其实代码中定义了一个Vector数组
(2)WEAK声明的默认ISR
(3)用户根据需要提供自己真正有用的ISR
(4)中断要配置使能,ISR中要清挂起等,这一点和其他CPU一样

3.7.2.STM32的外部中断
3.7.2.1、数据手册中外部中断部分
3.7.2.2、起始代码中默认的外部中断ISR
3.7.2.3、如何实际编程使用外部中断
(1)时钟设置并打开相应GPIO模块时钟
(2)将相应GPIO配置为浮空输入
(3)NVIC设置
(4)将外部中断线和配套的GPIO进行连接映射
(5)外部中断线使能触发
(6)准备好ISR,并在ISR处等待执行中断程序即可

3.7.3.标准库中NVIC模块分析

3.7.4.标准库中外部中断模块分析

3.7.5.外部中断程序的移植和调试1
3.7.5.1、建立工程模板
3.7.5.2、查看官方示例代码
以ARM3.0开发板的按键示例程序为参考,移植到PZ6806L开发板上。

3.7.6.外部中断程序的移植和调试2
3.7.6.1、官方示例代码阅读
3.7.6.1、源码移植
PZ6806L开发板原理图:
K1-K3 接PE2-4
LED1-LED8 对应PC0-7
我们选择K1和LED1来做实验,分别对应PE2和PC0
因为我们K1用了PE2,所以只能选择EXTI2了。

3.7.7.外部中断程序的移植和调试3
3.7.7.1、源码移植
3.7.7.2、调试和问题解决

3.7.8.什么是FSMC
3.7.8.1、概念
(1)flexible static memory controller 灵活的静态内存控制器
(2)内部外设(寄存器+IO口)
(3)功能目标:让STM32可以对接外部存储器(NorFlash、NandFlash、SRAM、PCCard···)
3.7.8.2、SoC如何扩展外部存储器
(1)专用内部控制器一对一服务
(2)FSMC一对多服务
3.7.8.3、FSMC的优缺点
(1)优点:灵活适配,有限资源实现多种外部存储器的支持
(2)缺点:配置复杂,需要考虑接口时序的细节

3.7.9.FSMC如何操控LCD
3.7.9.1、LCD的操作接口
(1)8080接口:控制接口WR(写时钟)+RD(读时钟)+RS(cmd/data)+DataPort8/16
(2)接口本质:低层的时序+高层的类SRAM
(3)操作要求:只要按照8080接口时序,任何SoC任何方式都可以与LCD进行互操作
3.7.9.2、STM32的FSMC初步学习
(1)支持Nor/PSRAM、Nand、PCCard等多种类型外存
(2)FSMC为其支持的各种各个外存都提供了地址映射空间
(3)4个块共1GB地址空间,每块256MB;每块又分为4个子存储块,每字块64MB
(4)LCD的接口类似于NorFlash/SRAM,所以可以用第1块的4部分任何一部分

3.7.10.FSMC控制LCD的细节
3.7.10.1、相关GPIO
(1)DB0-15,16数据位,因此FSMC控制器FSMC_A[24:0]对应HADDR[25:1]
(2)GPD、GPE、GPF、GPG共4个端口和FSMC有关,但是GPF都是A线所以LCD用不到
(3)NOE接RD,NWE接WR,A10接RS,NE4接CS
block1:60000000-6FFFFFFF
block1-子块1:60000000-63FFFFFF NE1
block1-子块2:64000000-67FFFFFF
block1-子块3:68000000-6BFFFFFF
block1-子块4:6C000000-6FFFFFFF NE4

3.7.10.2、标准库中FSMC驱动
(1)只看NOR/SRAM部分,其余Nand、PCCard等不看
(2)重点就FSMC_NORSRAMInit一个函数,FSMC_NORSRAMInitTypeDef一个结构体
FSMC_NORSRAMCmd

3.7.11.PZ6806L开发板上FSMC接口LCD驱动移植1

3.7.12.PZ6806L开发板上FSMC接口LCD驱动移植2

3.7.13.PZ6806L开发板上FSMC接口LCD驱动移植3
RS为0表示CMD,RS为1表示DATA
RS接了FSMC地址线A10,所以只需要A10为0就表示cmd,A10为1就表示DATA
A10地址线不能直接去单IO控制,要通过写地址来让A10为0或者1
6C000000 这个地址对应A10的地方(bit11)为0,所以直接写6C000000时就是写cmd
6C000800 这个地址对应A10的地方(bit11)为1,所以直接写6C000800时就是写data

发布了10 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40083589/article/details/89430528
今日推荐