微机原理-GPIO及中断机制

合集下载

微机原理第10章 中断和中断管理-PPT课件

微机原理第10章 中断和中断管理-PPT课件

INT 3 指令
INTO 指令
单步 中断
除数为 0中断
可 屏 蔽 中 断 请 求
软件中断
硬件中断 第10章
中断与中断管理
10.2.1 8086的中断类型
1、外部中断 外部中断是指由外部设备通过硬件请求 的方式产生的中断; 外部中断也称为硬件中断。 外部中断可分为: 非屏蔽中断 可屏蔽中断
中断响应、服务 及返回流程图
第10章 中断与中断管理
2、CPU对中断的响应
CPU进入中断响应周期后,自动完成如下操作: (1)关闭中断 FR中的中断标志位IF清零; (2)保护断点 将当前CS和IP的内容压入堆栈保存,以便中断处理 完毕后能返回被中断的原程序继续执行;
(3)送中断类型号 在中断响应周期的第二个总线周期中,由中断控制 器给出中断类型号,CPU根据中断类型号获取中断 服务子程序的入口地址,并装入CS与IP; 一旦装入完毕,中断服务程序就开始执行。
恢复现场
第10章 中断与中断管理
(1) 软件查询方式
优点
硬件电路简单,无需优先权硬件排队 电路,可以通过修改程序的方法随时 修改优先级;
软件查询影响中断响应的实时性。
缺点

第10章 中断与中断管理
(2) 硬件优先权排队电路
硬件优先权排队电路是专门的硬件电路; 优点
节省CPU的时间,而且中断响应较快; 成本比较高。 在每个中断源的电路中设置一个菊花链逻辑电路 当某设备有中断请求时,会向CPU发送中断请求 信号 若CPU允许中断,则CPU发出中断响应信号信号在 菊花链中传递 如果某设备没有中断请求,则信号通过菊花链逻 辑电路继续往下一级传递。 第10章 中断与中断管理

北京邮电大学微机原理与接口技术第七章 IO接口与中断技术

北京邮电大学微机原理与接口技术第七章  IO接口与中断技术

无条件传送的输入方式如图所示。输入时认为来自 外设的数据已出现在三态缓冲器的输入端。 CPU执行输入指令,指定的端口地址经系统地址总 线(对PC机为A9~A0)送至地址译码器,译码后产生Y 信号。Y为低电平说明地址线上出现的地址正是本端口 的地址;AEN为低电平说明CPU控制总线;端口读控制 信号IOR有效(低电乎)时,说明CPU正处在端口读周 期。三者均为低电平时,经或门(负与门)后产生低电 平,开启三态缓冲器使来自外设的数据进入系统数据总 线而到达累加器。
2、I/O单独编址方式 (I/O映射方式)
I/O单独编址方式的前提是CPU需设置专门的输入/ 输出指令、提供I/O读写信号。否则就不能实现I/O独立 编址方式。Z80、X86等系列微机都设有单独的I/O指令 好I/O读写信号,都采用这种方式。
这种方式的主要优点是:不占用存储器地址,单独 构成一个I/O空间;端口所需地址线少,地址译码器简 单;端口操作指令(I/O指令)长度短,执行时间少; 由于I/O指令与存储器操作指令形式上有明显区别,使 程序编制和阅读较清晰。
7.1.2 I/O接口的主要功能 1、数据的寄存和缓冲功能 外部设备如打印机等的工作速度与主机相比相差 甚远。为了充分发挥CPU的工作效率,接口内设置有数 据寄存器或者用RAM芯片组成数据缓冲区,使之成为 数据交换的中转站。接口的数据保持能力在一定程度上 缓解了主机与外设速度差异所造成的冲突,并为主机与 外设的批量数据传输创造了条件。
1、与存储器统一编址方式 这种方式下的端口和存储单元统一编址,即存储空 间中划出一部分给I/O端口。CPU访问端口和访问存储 器的指令形式上完全一样,只能从地址范围来区分两种 操作。PDP-11和MC6800、68000系列微机采用这种 方式。 这种方式的主要优点是:对端口操作的指令类型多、 功能齐全,不仅对端口进行数据传送,还可以对端口内 容进行算术逻辑运算和移位等等;其次是端口有较大的 编址空间。 这种方式的缺点是:端口占用存储器的地址空间使 存储器的可用地址空间变小;端口指令的长度增加、执 行时间变长;由于访问I/O与访问内存的指令一样,在 程序中不易分清是访问I/O还是访问内存,使程序阅读 困难;端口地址译码器较复杂。

微机原理 第9章 微型计算机中断技术

微机原理 第9章 微型计算机中断技术

9.2.3 8086的中断响应过程
2、可屏蔽中断响应 当CPU检测到外设有中断请求(即INTR为高电 平)时,CPU又处于允许中断状态(IF=1),则 CPU就进入中断响应周期。在中断响应周期中, CPU自动完成如下操作: 1)处理器接到中断申请,处理完当前指令即进入中 断响应周期; 2)第二阶段即中断响应周期,在此期间CPU向外部 中断控制器发送两个响应脉冲信号/INTA。第一 个响应脉冲通知中断控制器,已经响应外部中断 请求,让中断控制器提供中断类型号。第二个响 应脉冲,CPU取走中断类型号。
9.1.3 中断工作过程
中断处理:中断处理也叫中断服务,是由中断服 务程序完成的。中断服务程序一般应由以下几部 分按顺序组成: (1)保护现场 (2)CPU开放中断 (3)中断服务程序 (4)CPU关中断 (5)恢复现场 中断返回:IRET指令自动返回到断点地址,继续 执行被中断的程序。

9.2 8086的中断结构
中断向量为4030H:2010H
9.2.3 8086的中断响应过程
一、内部中断响应过程 1、将类型号乘4,计算中断向量指针; 2、CPU的标志寄存器压栈,以保护各个标志位; 3、清除IF和TF标志,屏蔽可屏蔽中断和单步中断; 4、保存断点,即把断点处的IP和CS值压入堆栈,先 压入CS值,再压入IP值; 5、根据第一步计算出来的中断向量指针从中断向量 表中取出中断服务程序的入口地址(段地址和偏 移地址)即中断向量,分别送至CS和IP中; 6、转入中断服务程序执行。
9.1.2 中断系统的功能
二、能实现优化级排队 设计者事先根据轻重缓急,给每个中断 源确定不同的级别,也就是在实际的计算 机系统中,为不同的中断源设定不同的优 先级。 优先级管理可以使系统具备有序的事件 处理能力。

gpio中断原理

gpio中断原理

gpio中断原理GPIO(GeneralPurposeInput/Output)是通用输入输出口的缩写,是嵌入式系统中常见的一种外设,可以用来控制外部设备的输入输出。

GPIO中断是指当GPIO引脚状态发生改变时,系统能够自动地响应这种状态变化并执行相应的操作。

本文将介绍GPIO中断的原理及其实现方法。

一、GPIO中断的原理GPIO中断的原理是通过中断控制器来实现的。

中断控制器是一种硬件设备,用于处理系统中的中断请求,它可以在CPU执行其他任务的同时,监控系统中断请求的状态,并在中断请求到来时,立即切换到中断处理程序中执行相应的操作。

GPIO中断就是通过中断控制器来实现的。

当一个GPIO引脚的状态发生改变时,它会产生一个中断请求信号,中断控制器会检测到这个信号,并将其转换为一个中断请求。

中断请求会被送到CPU中断控制器中,CPU中断控制器会根据中断请求的优先级,决定是否将CPU从当前任务中切换到中断处理程序中执行。

如果中断请求被接受,CPU会暂停当前任务的执行,保存当前任务的状态,并跳转到中断处理程序中执行相应的操作。

当中断处理程序执行完毕后,CPU会恢复之前的任务状态,并继续执行之前的任务。

二、GPIO中断的实现方法GPIO中断的实现方法有两种:轮询模式和中断模式。

1.轮询模式轮询模式是最简单的GPIO中断实现方式。

在轮询模式下,CPU会不断地检测GPIO引脚的状态,如果发现状态发生改变,就执行相应的操作。

这种方式实现简单,但是会消耗大量的CPU资源,同时也会造成延迟。

2.中断模式中断模式是一种更高效的GPIO中断实现方式。

在中断模式下,当GPIO引脚状态发生改变时,中断控制器会自动地产生一个中断请求,并将其送到CPU中断控制器中。

CPU中断控制器会根据中断请求的优先级,决定是否切换到中断处理程序中执行。

中断处理程序执行完毕后,CPU会恢复之前的任务状态,并继续执行之前的任务。

这种方式可以大大减少CPU资源的消耗,同时也可以提高系统的响应速度。

【微机原理】第6章. 输入与输出中断

【微机原理】第6章. 输入与输出中断
其连接示意图如图6.1所示.
CPU对外设的输入输出操作类似于存储器的读写操作,即 I/O—读/写;但外设与存储器有许多不同点。其比较如表 6.1所示.
接口电路(即可编程接口芯片)种类很多,它的显著特点 是可编程性,即可以通过编程来 规定其功能及操作参数。
二、接口电路的基本结构
接口电路的基本结构同它传送的信息种类 有关。信息可分 为3类:数据信息;状态信息;控制信息。
目录
6.2 CPU与外设之间数据传送的方式
本节将以8086/8088为例,来说明CPU与外设之间数据 传送 的方式。为了实现CPU与外设之间的数据传送,通常采用 以下3 种I/O传送方式。 一、程序传送
程序传送是指CPU与外设间的数据交换在程序控制 (即IN 或OUT指令控制)下进行。
(一) 无条件传送(又称同步传送) 这种传送方式只对固定的外设(如开关、继电器、7
(三) 控制信息 它用于控制外设的启动或停止。接口电路基本结构及其连接如图
6.2所示。接口电路根据传送不同信息的需要,其基本结构安排有一 些特点。
(1) 3种信息(数据、状态、控制)的性质不同,应通过不 同的端口分别传送。如数据输入/输出寄存器(缓冲器)、状态 寄存器与命令控制寄存器各占一个端口,每个端口都有自己的 端口地址,故能用不同的端口地址来区分不同性质的信息。
段显 示器、机械式传感器等简单外设)在规定的时间用IN或 OUT指
一般,这些外设随时做好了数据传送的准备,而无须检测其状态。
这里先要弄清有关输入缓冲与输出锁存的基本概念。
输入数据时,因简单外设输入数据的保持时间相对于CPU的接收速
度来说较长,故输入数据通常不用加锁存器来锁存,而直接使用三态
缓冲器与CPU数据总线相连即可。

《微机原理与应用教学资料》第七章中断(课件)

《微机原理与应用教学资料》第七章中断(课件)
由于程序错误或异常条件产生的中断,如除 以零错误。
软件中断
由软件执行特定指令产生的中断,如系统调 用。
中断优先级
根据中断的重要性和紧急程度,对中断进行 优先级划分。
微机中的中断处理程序
01
中断处理程序的定义
中断处理程序是用于处理中断的程序,它负责执行与该中断相关的操作。
02
中断处理程序的实现
中断处理程序通常由汇编语言或C语言编写,并嵌入在操作系统的内核
实时通信
在实时通信中,中断被用来处理各种通信事 件,如数据包的接收和发送、通信状态的改 变等。中断使得系统能够及时响应通信事件, 保证通信过程的可靠性和实时性。
中断在多任务系统中的应用
任务调度
在多任务系统中,中断被用来实现任务的动 态调度。当某个任务需要被执行时,相应的 中断被触发,系统根据中断的类型和优先级 进行任务调度,保证任务的及时执行。
中断识别机制
CPU通过中断识别逻辑电路识别中断 源和中断类型,并根据中断类型执行 相应的中断处理程序。
向量地址的获取
CPU在识别到中断后,会获取该中断 的中断向量地址,即该中断处理程序 的入口地址。
中断响应
中断响应过程
CPU在收到中断请求后,会暂停当前正在执行的程序,保存现场,然后转到相应的中断处理程序开始 执行。
现场的保护
为了在中断处理完毕后能继续执行原来的程序,CPU需要将原来的程序现场保存下来,以便之后能正 确恢复执行。
中断处理
中断处理程序
中断处理程序是专门用于处理特定中断 的程序,它负责完成该中断所要求的任 务,如数据传输、设备控制等。
VS
中断返回
当中断处理程序执行完毕后,CPU会恢复 原来的程序现场,并继续执行原来的程序 。

GPIO中断控制

GPIO中断控制

GPIO中断控制的相关寄存器
GPIO中断检测寄存器,GPIOIS GPIOIS(GPIO Interrupt Sense),offset 0x404 中断检测寄存器GPIOIS中设为1的位将相应的引脚配置 成检测电平,而设为0的位将相应的引脚配置成检测边沿, 所有位在复位时都清零。
GPIO中断控制的相关寄存器
GPIO中断控制的相关寄存器
GPIO中断屏蔽寄存器,GPIOIM GPIOIM(GPIO Interrupt Mask),offset 0x410 通过GPIO中断屏蔽寄存器可以使能或禁止中断。把中断 屏蔽寄存器中的位置1,将会允许其对应的引脚触发它们 各自的中断并组合成GPIOINTR线。将位清零会禁止该引 脚上的中断触发。所有位在复位时都清零。
GPIO中断控制的相关寄存器
GPIO中断事件寄存器,GPIOIEV GPIOIEV(GPIO Interrupt Event),offset 0x40C 中断事件寄存器GPIOIEV设为1的位将相应的引脚配置成 检测上升沿或高电平,具体取决于GPIO中断检测 (GPIOIS)寄存器中相应位的值。如果位清零,会将引 脚配置成检测下降沿或低电平,具体取决于GPIOIS中相 应位的值。所有位在复位时都清零。
GPIO中断双边沿寄存器,GPIOIBE GPIOIBE(GPIO Interrupt Both Edges),offset 0x408 当GPIO中断检测寄存器中相应的位设置成检测边沿时, 中断双边沿寄存器GPIOIBE中设为1的位将相应的引脚配 置成检测上升沿或下降沿,而不用考虑GPIO中断事件寄 存器GPIOIEV的相应位。将位清零会将该引脚配置成由 GPIOIEV控制。所有位在复位时都清零。
GPIO中断控制
中断基本概念

gpio中断触发方式 -回复

gpio中断触发方式 -回复

gpio中断触发方式-回复gpio中断触发方式是指通过硬件引脚的状态变化来触发处理器的中断事件。

中断是一种机制,用于实现实时响应和处理外部事件的需求。

在嵌入式系统中,gpio中断触发方式是一种常见的处理外部事件的方式。

本文将详细介绍gpio中断触发方式的原理和相关技术。

首先,我们来了解一下gpio的基本概念。

General Purpose Input/Output (GPIO) 是一种在嵌入式系统中常见的外设,用于与外部电路进行通信。

GPIO引脚可以被配置为输入或输出,并且可以通过读取或写入寄存器的方式与之进行交互。

GPIO的引脚可以用于计数器、按钮、传感器等外部设备的连接,使得嵌入式系统能够实时响应外部事件。

中断是处理器响应外部事件的一种机制。

通过中断,处理器可以在不断轮询的基础上,及时地响应外部事件的发生。

在嵌入式系统中,处理器要同时处理多个任务,如果全部依靠轮询的方式进行处理,会浪费大量的处理器资源。

而中断可以让处理器响应外部事件,并立即进行相应的处理,从而提高系统的效率和响应速度。

gpio中断触发方式的原理是通过检测gpio引脚的状态变化来触发中断。

当gpio引脚的电平或状态发生变化时,硬件会向处理器发送中断请求。

处理器收到中断请求后,会立即暂停当前任务的执行,转而执行预先定义好的中断服务程序。

中断服务程序会对引脚状态变化进行处理,以实现对外部事件的响应。

在嵌入式系统中,gpio中断触发方式可以分为两种类型:边沿触发和电平触发。

边沿触发指的是当gpio引脚的电平从低到高或者从高到低发生变化时,触发中断。

电平触发则是指当gpio引脚的电平与预设的电平相同(可以是高电平或低电平)时,触发中断。

具体来说,边沿触发又可以分为上升沿触发和下降沿触发。

上升沿触发是指当gpio引脚的电平从低变高时触发中断,下降沿触发则是指当gpio引脚的电平从高变低时触发中断。

相应地,电平触发也可以分为高电平触发和低电平触发。

九.GPIO中断试验1——中断原理

九.GPIO中断试验1——中断原理

九.GPIO中断试验1——中断原理教程I.MX6U的中断系统讲解是从STM32引⼊的,这就对我这种没接触过STM32的⼩⽩不太友好!并且中断可以说是到⽬前为⽌最最重要的知识点。

还好,STM32只是⼤致过了⼏个知识点STM32的中断系统回顾参考教程给出的STM32的中断系统,主要有下⾯⼏个知识点1. 中断向量表2. 向量中断控制器NVIC3. 中断使能4. 中断服务函数我们⼀个个来看看!中断向量表中断向量表说⽩了也是⼀个表,表⾥放的是中断向量,中断服务程序的⼊⼝地址或者存放中断程序服务的⾸地址称为中断向量,所以说中断向量表也就是⼀系列中断服务程序⼊⼝地址组成的表。

这些中断服务程序或函数在中断向量表⾥的位置是由半导体⼚商定好的,当某个中断倍触发后会⾃动跳转到向量表中对应中断服务对应的⼊⼝地址。

中断向量表在整个程序的最前⾯。

1 __Vectors DCD __initial_sp ; Top of Stack2 DCD Reset_Handler ; Reset Handler3 DCD NMI_Handler ; NMI Handler4 DCD HardFault_Handler ; Hard Fault Handler5 DCD MemManage_Handler ; MPU Fault Handler6 DCD BusFault_Handler ; Bus Fault Handler7 DCD UsageFault_Handler ; Usage Fault Handler上⾯的这⼀段代码就节选⾃STM32F103的中断向量表,中断向量表都是链接在代码的最前⾯,⽐如ARM的处理器是从0x00000000开始执⾏代码,那么这个向量表就是从0x00000000开始存放的,代码第⼀⾏的__initial_sp就是第⼀条中断向量,存放的是栈盯指针,下⾯依次是复位等函数的⼊⼝地址,⼀直到最后这个向量表就完成了。

GPIO和中断管理

GPIO和中断管理

GPIOGeneral Purpose Input Output,或称总线扩展器。

利用工业标准IIC、SMBus 或SPI接口简化了I/O口的扩展。

当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串口通信或控制时,GPIO产品能够提供额外的控制和监视功能。

GPIO有以下一些优点:1)低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。

2)集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。

3)小封装:GPIO器件提供最小的封装尺寸―3mm x 3mm QFN!4)低成本:您不用为没有使用的功能买单!5)快速上市:不需要编写额外的代码、文档,不需要任何维护工作!6)灵活的灯光控制:内置多路高分辨率的PWM输出。

7)可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。

8)更好的灯光效果:匹配的电流输出确保均匀的显示亮度。

9)布线简单:仅需使用2条就可以组成IIC总线或3条组成SPI总线。

基本设置如图,文件stm32f4xx.h中通过宏定义将stm32f4xx系列的外设实际地址设置为从0x40000000开始。

同时也将GPIOx各端口的实际地址设置好了。

以IIC的初始化为例,在IIC的初始化函数IIC_Init()中,需要先对GPIOB端口进行初始化。

如图,先通过RCC_AHB1PeriphClockCmd()函数对GPIO端口时钟使能,即使能GPIOB端口。

上图为RCC_AHB1PeriphClockCmd()函数的注释,注释说明了AHB1ENR为控制GPIOx端口的时钟寄存器,偏移地址为0x30。

而根据RCC的地址宏定义,可以算出AHB1ENR的实际地址为0x40023830。

如上图,函数通过对AHB1ENR寄存器的置位来使能或不使能GPIOx端口。

接着,IIC_Init()函数对GPIOB上所需用到的引脚Pin8、Pin9进行了初始化设置。

第五章GPIO和中断

第五章GPIO和中断

例如:实现下列LED的闪烁程序
#include "stm32f10x.h“
#define LED_ALL GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4
int main(void) { unsigned char j=0; chLsd=0xFE; //打开相应外设的时钟:GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
GPIOx_BSRR和GPIOx_BRR寄存器允许 对任何GPIO寄存器的读/更改的独立访问
端口位配置表
I/O端口位的基本结构
输入浮空/上拉/下拉配置
输出配置
复用功能配置
复用功能
对于复用的输入功能,端口必须配置成输入模 式(浮空、上拉或下拉)且输入引脚必须由外部 驱动
对于复用输出功能,端口必须配置成复用功能 输出模式(推挽或开漏)。
函数GPIO_ReadOutputData
读出C口的数据
ReadValue = GPIO_ReadOutputData(GPIOC);
函数GPIO_PinLockConfig
锁定A口的0和1管脚
GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);
GPIO编程实现步骤
1启动外设模块 2设定管脚控制模式 3对GPIO寄存器进行操作
例如:实现下列LED的闪烁程序
#include "stm32f10x.h" int main(void) {
//打开相应外设的时钟:GPIOB RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //初始化GPIOB,用于驱动LED GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高输出速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); while (1) {

GPIO和中断

GPIO和中断
第五章GPIO与中断
1、GIO的特点 2、GPIO寄存器操作 3、GPIO的编程 4、中断和事件
GPIO特色
多大80多种功能的双向IO:
共5个端口(A、B、C、D、E) 每个端口共16位 标准IO口可承受5V电压 IO口可吸纳25mA电流 18MHZ的翻转速度 可配置输出速度达到50MHZ 多达16路模拟输入
GPIO_InitStruct缺省值
GPIO_InitTypeDef GPIO_InitStructure; GPIO_StructInit(&GPIO_InitStructure);
函数GPIO_SetBits
例如:对A口的13GPIO置位 GPIO_SetBits(GPIOA, GPIO_Pin_13);
例如:对D口写入一串数据 GPIO_Write(GPIOD, 0x1101);
函数GPIO_ReadOutputDataBit
例如:读出B口的GPIO8的数据
GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8);
GPIO固件库
外设类型定义
外设声明
定义外设类型
stm32f10x_gpio.h文件.doc
例如:对端口 A的8脚进行数据的读取, 如果其数据位1,就写零;如果是0,就写1。
main() { long value; value=GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_8); If(value==0) GPIO_WriteBit(GPIOA, GPIO_Pin_8, 0x100); else GPIO_WriteBit(GPIOA, GPIO_Pin_8, 0x00); }
函数GPIO_ResetBits

33GPIO及中断机制MSO430F6638精讲

33GPIO及中断机制MSO430F6638精讲

GPIO 寄存器(8/9)

PxREN 上拉或下拉电阻使能寄存器
PxREN寄存器中的每一位可使能或禁用相应I/O引脚的 上拉/下拉电阻。 PxREN 配置: Bit = 1: 使能上拉/下拉电阻; Bit = 0: 禁用上拉/下拉电阻。

引脚上拉 VCC R 引脚 Px.x R
Bit = 1: 引脚选择上拉; 上拉电阻简单来说就是把电平拉高, 通常用 4.7-10K的电阻接到Vcc电源。
GPIO 应用示例

示例--用P1.0口控制发光二极管
关键语句:
P1DIR = 0x01; P1OUT |= 0X01;
// 设置P1端口P1.0引脚为输出方向 //输出1,灯亮
P1.0 LED
P1OUT &= ~ 0X01; //输出0,灯灭
中断机制
• 定义:一般来说,单片机会有一个主程序一直运行,
3.3 通用输入/输出端口
GPIO 概述 (1/3)
• GPIO
GPIO (General Purpose I/O),通用输入输出端口。

应用
GPIO基本都是用于芯片与片外器件或设备的交互。 检测数字输入,如键盘或开关信号; 驱动LED,蜂鸣器或LCD等其他指示器; 控制片外器件,较高级的使用可以用它们(通过 程序)模拟很多器件的时序达到控制相应器件的目 的,比如模拟SPI和模拟总线等。
GPIO 寄存器(3/9)

PxIN 输入寄存器
该寄存器是只读寄存器,即用户不能对它写入。 这个寄存器是只读的,其中的每一位都反映了其对应 的I/O引脚的输入信号(引脚配置为通用I/O)。 PxIN 配置: Bit = 1: 输入为高电平; Bit = 0: 输入为低电平;

微机原理第七章 IO接口和中断技术-01

微机原理第七章 IO接口和中断技术-01

Ready
D
+5V
IOR
AEN
程序查询方式-外设准备好
IOR AEN
8位数据 锁存器 输 入
8位三态 缓冲器
去系统 数据总 线
数据端 口地址 A9-A0 地址译码
设 备
状态 信息
状态端 口地址
R
Q
1位 缓冲器
Ready
D
+5V
IOR
AEN
查询程序
wait1:
mov dx,s_port in al,dx test al,80h jz wait1 mov dx,d_port in al,dx
Y0 Y1
G2B
Y2
G2A
Y3
A
Y4
B
Y5
C
Y6
Y7
74LS138
A0
A
A1
B
A2
C
Y0
358H
Y1
359H
Y2
35AH
Y3
35BH
AEN
G2A Y4
35CH
A7
Y5
35DH
A5 A9
G2B
Y6
35EH
A8 A6
G1
Y7
35FH
A4
A3
图7.9 利用译码器进行译码的全译码电路
22
六、I/O端口地址译码(续)
开关式可选择译码电路,读者可以计算译码器的地址范围
所需的地址线较少,地址译码器简单 指令长度短,执行时间短 端口操作指令和存储器操作指令区别明显,方便编
程和阅读
缺点:
输出输入的指令数量较少 CPU设计复杂
CPU与I/O接口之间传送信息的方式

第五章GPIO及外部中断的使用

第五章GPIO及外部中断的使用

功能描述
模拟输入 浮点输入 下拉输入 上拉输入 开漏输出 推挽输出 复用开漏输出 复用推挽输出
实例: 定义引脚PB0、PB1推挽输出,最大速率10MHz
GPIO_InitTypeDef GPIO_InitStructure;
//定义结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启GPIOB时 钟
第五章 GPIO及外部中断的使用
5.1 综述
STM32F10x系列端口:26、37、51、80、112个多功能 双向5V兼容的快速I/O口,所有I/O都可以映射到16个外部 中断。
STM32F10xxx系列中,每个通用I/O(GPIO)端口都有 7 个 寄 存 器 : 两 个 32 位 配 置 寄 存 器 ( GPIOx_CRL , GPIOx_CRH ) , 两 个 32 位 数 据 寄 存 器 ( GPIOx_IDR 和 GPIOx_ODR ) , 一 个 32 位 置 位 / 复 位 寄 存 器 ( GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR) 和一个32位锁存器(GPIOx_LCKP)。
5.2.1 函数GPIO_Init
3)GPIO_Mode 设置选中引脚的工作状态
GPIO_Mode可取值 GPIO_Mode_AIN GPIO_Mode_IN_FLOATING GPIO_Mode_IPD GPIO_Mode_IPU GPIO_Mode_Out_OD GPIO_Mode_Out_PP GPIO_Mode_AF_OD GPIO_Mode_AF_PP
返回值

先决条件 无
被调用函数 无
两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)

微机原理实验-GPIO 接口及其外部中断的应用(MSP430软件循环查询方法编程实现控制灯亮灭)

微机原理实验-GPIO 接口及其外部中断的应用(MSP430软件循环查询方法编程实现控制灯亮灭)

实验 GPIO 接口及其外部中断的应用一、实验目的1. 掌握MSP430 系列 CPU 芯片特点和超低功耗特性、模式及硬件编程实现方法;2. 掌握 MSP430 系列 GPIO 接口具备的功能、控制寄存器及软件配置方法和基本操作;3. 熟练掌握 GPIO 接口的查询操作方式和应用方法;4. 熟练掌握 GPIO 接口按键消抖的方法;5. 了解 MSP430 系列中断系统,熟练掌握 GPIO 接口外部中断的应用方法;6. 熟练掌握CCS 环境中开发应用程序的流程,以及软硬件联合调试的过程和方法。

二、实验内容1. ※●利用软件循环查询方法编程实现:扩展板上的按键S1 控制L1 亮灭,按键S2 控制L2 亮灭,要求按下并抬起后L1 或L2 改变亮灭状态。

(1) 源代码(2)实验现象当按下并抬起P2.1口的按键时,P1.0口的LED亮,再次按下并抬起P2.1的按键时,P1.0口LED灭。

当按下并抬起P1.1口的按键时,P4.7口的LED亮,再次按下并抬起P1.1的按键时,P4.7口LED灭。

2. ※●利用GPIO 接口外部中断方式,设置下降沿触发外部中断,使用变量NUM 记录中断次数,编程实现上题功能。

要求:利用外部中断方式检测按键是否按下;(1)源程序(2)实验现象当按下并抬起P2.1口的按键时,P1.0口的LED亮,再次按下并抬起P2.1的按键时,P1.0口LED灭。

当按下并抬起P1.1口的按键时,P4.7口的LED亮,再次按下并抬起P1.1的按键时,P4.7口LED灭。

3. 在实验中可能会出现按一次按键却会出现LED 指示灯闪一次或者是多次的情况,这是为什么?写出如何处理按键产生的毛刺、抖动现象?按键会出现高低电平的抖动,也称作毛刺,可以通过硬件消抖或者软件延时消抖。

4. 写出主程序中没有调用中断子程序,中断子程序却可以被执行的原因;中断程序不同于子程序,不需要主函数main调用就能执行。

中断服务程序只需要满足一定条件即可执行,比如定时器/计数器(在写入定时器中断服务程序的前提下)只需要计数“计满”即可触发中断服务程序;外部中断(在写入外部中断的服务程序的前提下)只需要触发外部中断引脚即可自动执行,不需要主函数调用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430的GPIO 特点(3/3)
• 寄存器丰富
➢每个I/O口都可以独立编程。 ➢输入或输出可任意组合。 ➢P1~P4口有I/O口都具有边沿可选的输入中断功能。 ➢可以按字节输入输出,也可按位进行操作。 ➢可设置I/O口的上拉或下拉功能。 ➢可配置I/O驱动能力(高驱动强度或低驱动强度)。
GPIO 寄存器(1/9)
➢中断标志PxIFG.0~PxIFG.7共用一个中断向量, PxIFG.0~PxIFG.7不会自动复位。必须用软件来判定 是 对哪一个事件服务,并将相应的标志复位。
➢PxIFG的配置: Bit = 0: 没有中断请求;Bit = 1: 有中断请求。
GPIO 寄存器(5/9)
PxIE 中断使能寄存器(仅P1~P4)
➢I/O端口还具有其他片内外设功能,为减少引脚,将这 些外设功能与I/O端口引脚复用来实现。 ➢PxSEL来选择引脚的I/O端口功能与外围模块功能。 ➢PxSEL的配置:
Bit = 0: 选择引脚为I/O端口; Bit = 1: 选择引脚为外设功能。
GPIO 寄存器(8/9)
PxREN 上拉或下拉电阻使能寄存器
P2.6
P2IE |= BIT6; // 使能P2.6中断
P2IES |= BIT6; // 选择P2.6为下降沿中断
_BIS_SR (GIE); while(1){ } }
// 进入低功耗,打开全局中断
2020/12/14
P4.3
VCC R
Key R R LED
19
GPIO 应用示例(2/2)
#pragma vector=PORT2_VECTOR
GPIO 应用示例
示例--用P1.0口控制发光二极管
关键语句:
P1DIR = 0x01; // 设置P1端口P1.0引脚为输出方向
P1OUT |= 0X01; //输出1,灯亮
P1.0
P1OUT &= ~ 0X01; //输出0,灯灭
LED
中断机制
• 定义:一般来说,单片机会有一个主程序一直运行,
PxDIR 输入/输出方向寄存器
➢相互独立的8位分别定义了8个引脚的输入/输出方向。 ➢使用输入和输出功能时,应该先定义端口的方向。 ➢PxDIR 配置:
Bit = 1: 将端口引脚设置为输出模式; Bit = 0: 将端口引脚设置为输入模式。 例:设置P1端口的P1.0引脚为输出方向,其余引脚 (P1.1~P1.7)设置为输入方向。 P1DIR = 0x01; // 设置P1端口P1.0引脚为输出方向
Bit = 1: 下降沿使相应中断标志置位; Bit = 0: 上升沿使相应中断标志置位。
GPIO 寄存器(7/9)
PxIFG 中断标志寄存器 (仅P1~P4)
➢该寄存器用来表示对应引脚是否产生了由PxIES设定的 电平跳变。
➢如果在GIE置位,引脚对应的中断使能寄存器PxIE位 置位,则会向CPU请求中断处理。
➢PxREN寄存器中的每一位可使能或禁用相应I/O引脚的 上拉/下拉电阻。
➢PxREN 配置: Bit = 1: 使能上拉/下拉电阻; Bit = 0: 禁用上拉/下拉电阻。
Bit = 1: 引脚选择上拉;
上拉电阻简单来说就是把电平拉高, 通常用 4.7-10K的电阻接到Vcc电源。
引脚上拉
VCC R
一、 通用输入/输出端口
GPIO 概述 (1/1)
• GPIO
GPIO (General Purpose I/O),通用输入输出端口。
应用
GPIO基本都是用于芯片与片外器件或设备的交互。
➢检测数字输入,如键盘或开关信号; ➢驱动LED,蜂鸣器或LCD等其他指示器; ➢控制片外器件,较高级的使用可以用它们(通过 程序)模拟很多器件的时序达到控制相应器件的目 的,比如模拟SPI和模拟总线等。
在某些时候,单片机需要暂停当前正在运行的程序,来 执行其他必须要处理的情况,执行相应的功能,在完成 相应的任务,在处理完这个新情况、新任务之后,再返 回到原先暂停的程序继续执行。通俗一点讲就是新任务 打断老任务,再返回到老任务的过程。
中断的定义
• 与中断相关的概念
1、中断源:引起中断的原因,中断申请的来源,中断源。 2、中断触发信号:外部事件产生的信号。 3、中断向量:单片机多个中断源的入口地址。 4、中断服务程序:放在中断向量的入口地址处,完成相应
示例--利用按键改变LED的亮灭,按键对应的引脚配置 为中断方式。
#include <msp430f6638.h>
void main (void)
{
MSP430F6638
WDTCTL = WDTPW | WDTHOLD; // 关闭看门狗
P4DIR |= BIT3; // 选择P4.3为输出 P2DIR &= ~BIT6; // 选择P2.6为输入
➢该寄存器的8位与端口的8个引脚一一对应,其中某一位 置位表示允许对应的引脚在电平变化(上升沿或下降沿) 时产生中断,否则,表示禁止该位的中断。
➢每个PxIE位使能的中断请求都与相应的PxIFG中断标志 相关联。
➢PxIE的配置: Bit = 1: 允许中断; Bit = 0: 禁止中断。
GPIO 应用示例(1/2)
__interrupt void Port_2 (void)
{
if(P2IFG&BIT6)!=0) // 清除P2.6中断标志
{
P2IFG&=~BIT6;
P4OUT ^= BIT3;
// 翻转P4.3外接的LED亮灭状态
}
}
2020/12/14
20
PxIN 输入寄存器
➢该寄存器是只读寄存器,即用户不能对它写入。
➢这个寄存器是只读的,其中的每一位都反映了其对应 的I/O引脚的输入信号(引脚配置为通用I/O)。 ➢PxIN 配置:
Bit = 1: 输入为高电平; Bit = 0: 输入为低电平;
GPIO 寄存器(4/9)
PxSEL 功能选择寄存器
功能。 5、中断返回:执行完中断服务程序后,返回到断点处,继
续执行原程序。
GPIO 寄存器(6/9)
PxIES 中断触发沿选择寄存器(仅P1~P4)
➢如果允许Px口的某个引脚中断(即PxIE和GIE已设置),还 需定义该引脚的中断触发方式。
➢该寄存器可读可写,寄存器的8位分别对应Px口8个引脚 ➢PxIES的配置:
GPIO 寄存器(2/9)
PxOUT 输出寄存器
➢ 输出寄存器是可读可写的。这个寄存器的每个 位都反映了写入相应输出引脚的值。
➢ 将需要的值写入该寄存器,控制输出引脚的电 平状态。
➢ PxOUT 配置: Bit = 1: 输出为高电平; Bit = 0: 输出为低电平;
GPIO 寄存器(3/9)
引脚下拉
VCC R
引脚 Px.x
Bit = 0: 引脚选择下拉;
R
下拉电阻则是把电平拉低,电阻接到GND地线上。
GPIO 寄存器(9/9)
PxDS 输出驱动强度寄存器
➢PxDS寄存器的每个位,设置引脚的输出强度为高驱动 强度或低驱动强度。
➢默认值为低驱动强度。 ➢PxDS的配置:
Bit = 0: 低驱动强度; Bit = 1: 高驱动强度。
引脚 Px.x
R
GPIO 寄存器(8/9)
PxREN 上拉或下拉电阻使能寄存器
➢PxREN寄存器中的每一位可使能或禁用相应I/O引脚的 上拉/下拉电阻。
➢PxREN 配置: Bit = 1: 使能上拉/下拉电阻; Bit = 0: 禁用上拉/下拉电阻。
Bit = 1: 引脚选择上拉;
上拉电阻简单来说就是把电平拉高, 通常用 4.7-10K的电阻接到Vcc电源。
MSP430的GPIO 特点(1/3)
• 端口类型丰富
有端口P1、P2、P3、P4、P5、P6、P7、P8、P9 、 P10 、P11 、S和COM。产品因型号不同可包含上述所有 或部分端口。如下表所示:
பைடு நூலகம்
MSP430的GPIO 特点(2/3)
➢端口P1~P9均具有输入输出和外围模块功能。可以通过功能选 择寄存器(PxSEL)来设置实现,默认为输入输出功能。 ➢端口P1~P4还具有中断功能。 ➢S和COM端口实现与液晶片的直接接口。COM端口为液晶片 的公共端,S口为液晶片的段码端。详细使用方式,请参见本书 第四章液晶驱动模块部分。
相关文档
最新文档