MSP430第十二章:通用输入输出接口GPIO

发布者:JoyfulSpirit最新更新时间:2022-08-24 来源: csdn关键字:MSP430  GPIO 手机看文章 扫描二维码
随时随地手机看文章

1. 数字I/O接口介绍

MSP拥有多达12组I/O接口(P1 - P11和PJ),其中P1 、P2具有可单独配置的中断功能,不同的设备可能还有其他中断接口。


P1口被储存在中断向量P1IV,P2口被储存在终中断量P2IV,

I/O端口可被以byte(8位)或者word(16位)方式读写;P1和P2组成PA;P3和P4组成PB;以此类推;但中断P1IV P2IV只能byte读写,不存在PAIV


2. 数字I/O操作

2.1 输入寄存器PxIN


BIT = 1 输入为高

BIT = 0 输入为低

PxIN为只读寄存器,当尝试对这些寄存器进行写操作时,会消耗大量电流


2.2 输出寄存器PxOUT


BIT = 0 输出为低

BIT = 1 输出为高

当引脚设定为IO功能输入方向,上下拉寄存器使能时


BIT = 0 下拉

BIT =1 上拉


2.3 方向寄存器PxDIR


BIT = 0 输入


BIT = 1 输出


无论使用I/O功能还是其他功能(比如中断,比较器,定时器),方向寄存器都必须初始化


2.4 上下拉寄存器RxREN


BIT = 0 上下拉使能

BIT = 1 上下拉关闭

表格总结:

image.png

2.5 输出驱动强度寄存器PxDS

BIT = 0 弱驱动(默认)

BIT = 1 强驱动

使用强驱动会增强I/O口的驱动能力。但MSP430属于超低功耗系列单片机,驱动能力有限,多个I/O工作于强驱动模式可能会导致电磁兼容问题甚至损坏单片机,不推荐使用强驱动模式。


2.6 功能选择寄存器PxSEL


BIT = 0 I/O功能

BIT = 1 外围模块功能

注意:当PxSEL = 1时,P1和P2的中断功能被关闭


2.7 端口中断

P1和P2端口的每个引脚都具有中断功能,某些设备还有其他中断引脚,其中P1中断优先级高于P2。每组中断端口配有PxIFG, PxIE, PxIES中断寄存器。中断标志寄存器PxIFG:


BIT = 0 没有中断请求

BIT = 1 中断正在请求

当向P1OUT, P1DIR, P1REN, P2OUT, P2DIR, P2REN写入数据时,满足条件也会产生中断。

中断边沿选择寄存器PxIES


Bit = 0: 上升沿产生中断

Bit = 1: 下降沿产生中断

只有引脚发生翻转才会产生中断,也就是只有上升沿或者下降沿才会产生中断。

中断使能寄存器PxIE


Bit = 0: 中断使能

Bit = 1: 中断关闭


2.8 配置没有使用的端口

建议把没有使用的端口配置为I/O端口、输出模式,避免悬浮输入和消耗功率。

因为PJ端口与JTAG功能共享,所以其默认为高阻输入。


3. LPMx.5低功耗模式下的I/O配置

进入LPMx.5时,PMM的稳压器处于关闭状态,这将导致所有I/O寄存器配置丢失,必须以不同的方式处理I/O引脚的配置,以确保应用程序以一种受控制的方式行为进入和退出LPMx.5。正确设置I/O引脚对于在LPMx.5中实现尽可能低的功耗至关重要,进入和退出LPMx.5的详细流程操作如下:


将所有I/O设置为通用I/O,并根据实际情况进行配置。不能有悬浮输入非常重要,否则会在LPMx.5中产生漏电流;某些设备可以通过中断来唤醒低功耗模式,若需要中断唤醒,配置为I/O输入模式并根据需要配置上下拉电阻


正确进入低功耗模式,启用中断唤醒。

在进入LPMx.5时,单片机自动设置PMM模块PM5CTL0寄存器中的LOCKLPM5位为1,I/O端口寄存器锁定。注意:只保留引脚条件,所有其他端口配置寄存器设置如PxDIR,PxREN、PxOUT、PxDS、PxIES、PxIE内容丢失。


一个LPMx.5唤醒事件(例如,配置的唤醒输入引脚上产生一个边缘信号)启动BOR。所有外围寄存器都设置为默认条件。一旦退出LPMx.5,在LOCKLPM5置1时I/O端口仍然锁定。保持I/O端口锁定确保所有引脚在进入主动模式时保持稳定,而不管默认的I/O寄存器设置。


当进入活跃模式,没有保留的I/O配置和中断配置应该被恢复到进入低功耗模式之前的状态。建议重新配置PxIES和PxIE到以前的设置,以防止错误的端口中断发生。然后LOCKLPM5位可以被清除,释放I/O引脚条件和I/O中断配置。LOCKLPM5置1期间,对端口配置寄存器的任何更改都不会对I/O管脚产生影响。


启用I/O中断后,引起唤醒的I/O中断可以由PxIFG标志指示。这些标志可以直接使用,或者可以使用相应的PxIV寄存器。注意,在LOCKLPM5位被清除之前,PxIFG标志不能被清除。


注意:要使用中断,首先添加头文件#include "msp430.h" 然后_EINT(); 打开中断总开关

以下为P1.1开启中断初始化语句:


  P1IE |= BIT1;    //中断使能

  P1IES |= BIT1;   //选择下降沿触发

  P1IFG &= ~BIT1;  //清除中断标志位

  P1REN |= BIT1;   //设置p1.1为上拉电阻使能

  P1OUT |= BIT1;   //将P1.1输出拉高


以下为中断服务子程序示例,注意要手动清除中断标志位:


#pragma vector = PORT1_VECTOR

__interrupt void P1_IRQ(void)

{

  delay(255);       //按键消抖,延时程序自写

  if(P1IFG&0x02) //判断中断来源

  {

    P4OUT^=BIT7;    // 翻转输出

    P1IFG &= ~BIT1; //清除中断标志位

    

  }  

}

关键字:MSP430  GPIO 引用地址:MSP430第十二章:通用输入输出接口GPIO

上一篇:MSP430第七章:FLASH
下一篇:例程1——LED

推荐阅读最新更新时间:2024-11-17 18:19

MSP430单片机的OLED实时时钟制作
这段时间在学习MSP430,将以前学习的常用模块移植过来,由于MSP430F149没有iic接口,自己模拟了一个,用到的模块为:DS1302、DS18B20、OLED(IIC接口)。可通过按键切换AD及温度显示(红外程序也包含其中,有兴趣的朋友可以稍微改一下就能实现红外控制) 制作出来的实物图如下: 温度 AD #define main_c #include msp430x14x.h #include main.h #include iic.h #include ds1302.h #include ds18b20.h #include adc12.h #include IrRed.h #include
[单片机]
<font color='red'>MSP430</font>单片机的OLED实时时钟制作
TinyOS在MSP430F2618上移植(二)之USCI
第一篇文章《TinyOS在MSP430F2618上移植(一)》早在5月份就已写好,间隔了2个月才有时间写这篇文章,期间一直忙于SPI、UART接口的测试以及FLASH、LCD的移植。本文主要叙述MSP430F2618单片机USCI的移植。 对比MSP430F1611与MAP430F2618,可以看出两者最大的不同点在于后者提供了更丰富的外围接口,分为A,B两组,其中A组的功能有UART、IrDA ,B组提供SPI、I2C功能,另外A组也可以配合B组中提供的SCK作为SPI接口。在A,B组中又分为两个独立组,A0/1,B0/1。 2618中特殊功能寄存器也做了改动,去除了模块使能寄存器1、2(module enable re
[单片机]
STM32 GPIO中GPIOMode_TypeDef枚举变量的解析
GPIOMode_TypeDef是一个枚举变量,它用于存储GPIO工作的模式,它的定义如下: typedef enum { GPIO_Mode_AIN = 0x0, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef; 设计这个枚举变量的可取值有一定的意义。在低四位当中只用到了其中的高两位,这两位
[单片机]
STM32 <font color='red'>GPIO</font>中GPIOMode_TypeDef枚举变量的解析
畅学多功能实验箱 MSP430F5438 RTC 操作实验
简介: 1、编程要求:利用 C 语言实现 RTC 实时时钟,并且设置闹钟当闹钟时间到就 LED2 亮,能够 安全读时间时 LED1 亮(灭),且在 BCD 模式下。 2、实现功能:实现实时时钟,完成闹钟功能 3、实验现象:LED1 闪烁,LED2 在闹钟时间到后就亮 1.模块原理 如图 ,RTC 由两个分频寄存器 RP0TS,RP1TS 对 RTOSSEL 选择的时钟源进行分频,在日历模式下,时钟源 ACLK=32768,经过 RP0TS,RP1TS 分别 256 和 128 分频率后频率为 1HZ ,提供给 32 位 RTC 寄存器时钟源,通过 RTCSSEL 选择 11 或者 10。每 1S ,RTCSEC(秒)加一秒,加
[单片机]
畅学多功能实验箱 <font color='red'>MSP430</font>F5438 RTC 操作实验
msp430单片机的复位
在学习MSP430单片机的时候,经常会遇到一个问题,那就是单片机上电复位以后它到底是什么样的状态?因为它功能复杂,且资源丰富,IO管脚很多,时钟和低功耗模式配置灵活,那么上电后它们处于什么样的状态? 对于电子开发的工程师而言,芯片手册是最好的文档,而且要学会阅读英文的手册,以下我就通过TI公司的用户指南帮助大家一步一步缕清楚,上电复位。 首先我们要了解430单片机的复位包括POR(power on reset)系统上电复位和PUC(power up clear)上电清除,总的来说poc信号更广泛,暂且不深入讨论,我们只要知道上电后会触发POC和PUC即可。那么POR信号会使系统做什么呢? 请看下图: 打对勾的三条很
[单片机]
<font color='red'>msp430</font>单片机的复位
STM32--GPIO简单介绍
1.简单配置寄存器环境 2.MiniStm32F103RC(51个IO口) 1.拥有着4组IO口: GPIOA0~A15; GPIOB0~B15; GPIOC0~C15; GPIOD0~D2; 2.GPIO的工作方式:四种输入模式,四种输出模式 输入方式 1.输入浮空模式:由引脚直接进入输入数据寄存器 2.输入上拉模式:存在上拉电阻(VDD约为30k到50k) 3.输入下拉模式:存在下拉电阻(VSS约为30k到50k) 4.模拟模式:不输入电平,输入电压 输出方式: 1.开漏输出方式:输出信号由CPU提供,但是只能提供低电平,输出低电阻(N_MOS半导体被拉低,不能输出1,除
[单片机]
STM32--<font color='red'>GPIO</font>简单介绍
MSP430L092 MCU 通过 0.9V 电压实现超低功耗应用
电子产业不断发展的趋势是开发功耗更低、支持更小电池供电的产品。但是目前单体电池供电产品的系统解决方案通常并未针对这一目标进行全面优化。德州仪器 (TI) MSP430L092 MCU 可通过 0.9V 工作电压提供超低功耗,帮助实现这类产品。 对于采用单体 1.5V 碱性电池供电的产品来说有两种主要系统级解决方案。第一种系统使用多体电池,例如两节 AAA 电池。这样会直接导致最小物理尺寸限制,因为产品尺寸受电池尺寸限制。第二种系统只有一个电池,但需要外部升压电路或使用具有集成型升压转换器的 MCU。第二种系统由于需要额外升压电路,因此并非针对最低功耗优化,而且还可通过增加其它组件而增大尺寸和成本。总之,两种系统都需求进行利弊权
[单片机]
<font color='red'>MSP430</font>L092 MCU 通过 0.9V 电压实现超低功耗应用
基于MSP430F413的新型智能水表的设计
  针对传统水表落后产生的一系列问题,国家建设部提出了城镇居民住宅“三表出户”的要求。所以目前国内的很多水表生产厂家都在进行产品新型化的探索,大部分采用单片机技术,智能水表系统的实用性研究己成为当前仪表行业的热点之一。本文介绍的就是一种基于MSP430F413单片机的智能水表的设计。   本论文以智能IC卡水表系统为研究对象,重点探讨了基于MSP430F413型超低功耗单片机在低功耗智能仪表上的应用与开发。论文首先提出利用IC卡技术智能水表系统的总体设计方案;设计了系统控制的硬件电路结构和研究了软件控制流程的实现,采用软硬件结合的方法,对系统的低功耗、抗干扰性设计及安全性问题作了一定的分析与研究。    MSP430F413简
[工业控制]
基于<font color='red'>MSP430</font>F413的新型智能水表的设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved