收藏 分享(赏)

msp430课件3.3通用输入输出端口.ppt

上传人:天天快乐 文档编号:1100774 上传时间:2018-06-11 格式:PPT 页数:28 大小:537.50KB
下载 相关 举报
msp430课件3.3通用输入输出端口.ppt_第1页
第1页 / 共28页
msp430课件3.3通用输入输出端口.ppt_第2页
第2页 / 共28页
msp430课件3.3通用输入输出端口.ppt_第3页
第3页 / 共28页
msp430课件3.3通用输入输出端口.ppt_第4页
第4页 / 共28页
msp430课件3.3通用输入输出端口.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、3.3 通用输入输出端口(General Purpose Input & Output),本节内容,GPIO 概述 MSP430的GPIO 特点MSP430 GPIO 寄存器GPIO 官方库函数GPIO 应用示例,GPIO基本都是用于芯片与片外器件或设备的交互。检测数字输入,如键盘或开关信号;驱动LED,蜂鸣器或LCD等其他指示器;控制片外器件,较高级的使用可以用它们(通过程序)模拟很多器件的时序达到控制相应器件的目的,比如模拟SPI和模拟总线等。,GPIO 概述 (1/4),GPIO,GPIO (General Purpose I/O),通用输入输出端口。,应用,特性,GPIO是MCU与外界

2、交互的重要途径,它具有如下的特性:可以独立控制每个GPIO口的方向(输入/输出模式);可以独立设置每个GPIO的输出状态(高/低电平);所有GPIO口在复位后都有个默认方向(或输入或输出)。,GPIO 概述 (2/4),寄存器概述,GPIO口都是按组规划,有的芯片是8个GPIO口一组,有的是16个或32个为一组。一般每个GPIO口都需要做两个寄存器位:一是选择口线方向(输入输出)二是需要一个数据位(用于设置输出数据和读取输入数据)。所以一组GPIO口至少会有两个寄存器GPIOxDIR和GPIOxDATA。GPIOxDIR:控制各个GPIO口的方向;GPIOxDATA:用于各个GPIO口的输入输

3、出数据。,GPIO 概述 (3/4),寄存器工作图,GPIOxDATA 寄存器,输入锁存,输出锁存,GPIOxDIR 寄存器,三态门,输入缓冲,读写,I/O PIN,选择输出,选择输入,禁止,GPIO 概述 (4/4),端口类型丰富,有端口P1、P2、P3、P4、P5、P6、P7、P8、P9 、P10 、P11 、S和COM。产品因型号不同可包含上述所有或部分端口。如下表所示:,MSP430的GPIO 特点(1/4),具有中断能力的端口:P1和P2。 端口P1和P2具有输入输出、中断和外部模块功能。这些 功能可以通过它们各自9个控制寄存器的设置来实现。不具有中断能力的端口:P3和其他端口 P3

4、和其他端口没有中断能力,其余功能同P1和P2, 可以实现输入输出功能和外围模块功能。端口COM和S 这些端口实现与液晶片的直接接口。COM端口为液晶片的公共端,S口为液晶片的段码端。详细使用方式,请参见本书第四章液晶驱动模块部分。,MSP430的GPIO 特点(2/4),端口引脚还可以独立的配置成特殊功能,例如:USART 通用串行同步/异步通信模块;模拟信号比较器;模拟数字转换器;其他功能 (请参见具体芯片的数据手册)。,MSP430各端口和功能,如下表所示:,功能丰富,MSP430的GPIO 特点(3/4),MSP430各种端口有大量的控制寄存器供用户操作。最大限度提供了输入/输出的灵活性

5、。,每个I/O口都可以独立编程。输入或输出可任意组合。P1和P2所有I/O口都具有边沿可选的输入中断功能。可以按字节输入输出,也可按位进行操作。可设置I/O口的上拉或下拉功能。可配置I/O驱动能力(高驱动强度或低驱动强度)。,寄存器丰富,MSP430的GPIO 特点(4/4),PxDIR 输入输出方向寄存器,相互独立的8位分别定义了8个引脚的输入/输出方向。使用输入和输出功能时,应该先定义端口的方向。PxDIR 配置: Bit = 1: 将端口引脚设置为输出模式; Bit = 0: 将端口引脚设置为输入模式。例,设置P1端口的P1.0引脚为输出方向,其余引脚(P1.1P1.7)设置为输入方向。

6、 P1DIR = 0x01; / 设置P1端口P1.0引脚为输出方向,GPIO 寄存器(1/9),该寄存器是只读寄存器,即用户不能对它写入。这个寄存器是只读的,其中的每一位都反映了其对应的I/O引脚的输入信号(引脚配置为通用I/O)。PxIN 配置:Bit = 1: 输入为高电平;Bit = 0: 输入为低电平;,PxIN 输入寄存器,GPIO 寄存器(2/9),输出寄存器是可读可写的。这个寄存器的每个位都反映了写入相应输出引脚的值。将需要的值写入该寄存器,控制输出引脚的电平状态。PxOUT 配置:Bit = 1: 输出为高电平;Bit = 0: 输出为低电平;,PxOUT 输出寄存器,GPI

7、O 寄存器(3/9),2018/6/11,14,PxREN 上拉或下拉电阻使能寄存器,Bit = 1: 引脚选择上拉; 上拉电阻简单来说就是把电平拉高, 通常用4.710K的电阻接到Vcc电源。,PxREN寄存器中的每一位可使能或禁用相应I/O引脚的上拉/下拉电阻。PxREN 配置:Bit = 1: 使能上拉/下拉电阻;Bit = 0: 禁用上拉/下拉电阻。当使能引脚上拉或下拉功能时,通过 设置PxOUT相应位来选择。,GPIO 寄存器(4/9),2018/6/11,15,GPIO 寄存器(4/9),PxREN 上拉或下拉电阻使能寄存器,Bit = 1: 引脚选择上拉 上拉电阻简单来说就是把电

8、平拉高, 通常用4.710K的电阻接到Vcc电源。,Bit = 0: 引脚选择下拉; 下拉电阻则是把电平拉低,电阻接到GND地线上。,PxREN寄存器中的每一位可使能或禁用相应I/O引脚的上拉/下拉电阻。PxREN 配置:Bit = 1: 使能上拉/下拉电阻;Bit = 0: 禁用上拉/下拉电阻。当使能引脚上拉或下拉功能时,通过 设置PxOUT相应位来选择。,I/O端口还具有其他片内外设功能,为减少引脚,将这些外设功能与I/O端口引脚复用来实现。PxSEL来选择引脚的I/O端口功能与外围模块功能。PxSEL的配置:Bit = 0: 选择引脚为I/O端口;Bit = 1: 选择引脚为外设功能。,

9、PxSEL 功能选择寄存器,GPIO 寄存器(5/9),PxDS 输出驱动强度寄存器,PxDS寄存器的每个位,设置引脚的输出强度为高驱动强度或低驱动强度。默认值为低驱动强度。PxDS的配置:Bit = 0: 低驱动强度;Bit = 1: 高驱动强度。,GPIO 寄存器(6/9),该寄存器的8位与端口的8个引脚一一对应,其中某一位置位表示允许对应的引脚在电平变化(上升沿或下降沿)时产生中断,否则,表示禁止该位的中断。每个PxIE位使能的中断请求都与相应的PxIFG中断标志相关联,可通过写PxOUT和PxDIR来设置PxIFG。PxIE的配置:Bit = 1: 允许中断;Bit = 0: 禁止中断

10、。,PxIE 中断使能寄存器(仅中断端口P1和P2),GPIO 寄存器(7/9),PxIES 中断触发沿选择寄存器(仅中断端口P1和P2),如果允许Px口的某个引脚中断(即PxIE和GIE已设置),还需定义该引脚的中断触发方式。该寄存器可读可写,寄存器的8位分别对应Px口8个引脚PxIES的配置:Bit = 1: 下降沿使相应中断标志置位;Bit = 0: 上升沿使相应中断标志置位。,GPIO 寄存器(8/9),该寄存器用来表示对应引脚是否产生了由PxIES设定的电平跳变。如果在GIE置位,引脚对应的中断使能寄存器PxIE位置位,则会向CPU请求中断处理。中断标志PxIFG.0PxIFG.7共

11、用一个中断向量, PxIFG.0PxIFG.7不会自动复位。必须用软件来判定 是对哪一个事件服务,并将相应的标志复位。PxIFG的配置:Bit = 0: 没有中断请求;Bit = 1: 有中断请求。,PxIFG 中断标志寄存器(仅中断端口P1和P2),GPIO 寄存器(9/9),GPIO_setAsOutputPin() / 设置为输出引脚GPIO_setAsInputPin() / 设置为输入引脚GPIO_setAsInputPinWithPullDownresistor() / 设置为输入上拉,GPIO API被分成三组函数:GPIO的引脚配置函数,处理中断的函数,以及引脚状态的函数。,G

12、PIO的引脚配置函数,GPIO 官方库函数(1/4),GPIO_setAsInputPinWithPullUpresistor() / 设置为输入下拉GPIO_setDriveStrength() / 设置引脚驱动强度GPIO_setAsPeripheralModuleFunctionOutputPin() / 设置为外设输出引脚GPIO_setAsPeripheralModuleFunctionInputPin() / 设置为外设输入引脚,GPIO的引脚配置函数(续),GPIO 官方库函数(2/4),GPIO 官方库函数(3/4),GPIO_enableInterrupt() / 使能中断G

13、PIO_disbleInterrupt() / 禁止中断GPIO_clearInterruptFlag() / 清除中断标志位GPIO_getInterruptStatus() / 获取中断状态GPIO_interruptEdgeSelect() / 选择中断沿,GPIO中断处理函数,GPIO 官方库函数(4/4),GPIO_setOutputHighOnPin() / 引脚输出为高GPIO_setOutputLowOnPin() / 引脚输出为低GPIO_toggleOutputOnPin() / 翻转引脚 GPIO_getInputPinValue() / 获取引脚输入值,GPIO引脚状态

14、的函数,示例1软件编程示例(伪代码),用P1.0口控制发光二极管,P1DIR = 0x01; / 设置P1端口P1.0引脚为输出方向P1OUT |= 0X01; /输出1,灯亮,P1OUT /输出0,灯灭,GPIO 应用示例(1/4),GPIO 应用示例(2/4),示例1 也可以能过调用库函数来实现(伪代码),/设置P1.0引脚为输出引脚GPIO_setAsOutputPin( MSP430_BASEADDRESS_PORT1_R , GPIO_PORT_P1,GPIO_PIN0 );,/让 P1.0输出高电平GPIO_setOutputHighOnPin( MSP430_BASEADDRES

15、S_PORT1_R_, GPIO_PORT_P1,GPIO_PIN0 );,/让 P1.0输出低电平GPIO_setOutputLowOnPin ( MSP430_BASEADDRESS_PORT1_R , GPIO_PORT_P1,GPIO_PIN0 );,2018/6/11,27,示例2利用按键改变LED的亮灭,按键对应的引脚配置为中断方式。,#include void main (void) / 关闭看门狗 WDTCTL = WDTPW | WDTHOLD; P4DIR |= 0x08; / 选择P4.3为输出 P2DIR ,P2.6,MSP430F6638,P4.3,VCC,R,R,Key,LED,R,GPIO 官方库函数(3/4),2018/6/11,28,#pragma vector=PORT2_VECTOR_interrupt void Port_2 (void) volatile unsigned int i; P4OUT = 0x08; / 翻转P4.3外接的LED亮灭状态 i = 1500; / 延时 do (i-); while (i != 0); while (! (P2IN / 清除P2.6中断标志,GPIO 官方库函数(4/4),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报