1.GPIO

1.1概述:

通用输入/输出端口,每个I/O引脚都可以被独立地设置为输入或者输出引脚,并且每个I/O引脚都可以被独立地读取或者写入,所有的端口寄存器都可以被独立地置位或者清零。

P1和P2具有终端能力,可以设置为设置为上升沿或者下降沿触发中断。P1端口的I/O引脚的中断都来源于同一个中断向量P1IV。P2端口的中断源都来源于另一个中断向量P2IV。

1.2寄存器

P1和P2具有输入/输出、中断和外部模块功能,可以设置他们来完成这些功能。

P3~P11这些端口没有中断能力,其余功能与P1、P2端口一样,能实现输入/输出功能和外围模块功能。

#define P1IN       (PAIN_L)            /*P1输入*/
#define P1OUT      (PAOUT_L)           /*P1输出*/
#define P1DIR      (PADIR_L)           /*P1模式*/
#define P1REN      (PAREN_L)           /*P1中断使能*/
#define P1DS       (PADS_L)            /*P1驱动力*/
#define P1SEL      (PASEL_L)           /*P1复用*/
#define P1IES      (PAIES_L)           /*P1外部中断触发方式*/
#define P1IE       (PAIE_L)            /*P1中断使能*/
#define P1IFG      (PAIFG_L)           /*P1中断标志位*/

1.2.1输入寄存器PxIN

输入寄存器是只读寄存器,用户不能对其写入,只可以读取该寄存器的内容获取端口的输入信号。

0输入为低,1输入为高。

P1IN & BIT0,读取P1.0引脚的电平状态。

1.2.2输出寄存器PxOUT

可以对该进行寄存器写入数据,让端口输出对应信号。

0输出为低,1输出为高。

P1OUT |= BIT0,为P1.0输出高电平。

1.2.3方向寄存器PxDIR

可以独立的分别定义8个引脚的输入输出方向。在使用GPIO输入输出功能时,应先定义端口方向。作为输入时,只能读,作为输出时,可读可写。

0输入模式,1输入模式。

P1DIR |= BIT0,设置P1.0为输出模式;P1DIR &= ~BIT0,设置P1.0为输入模式。

1.2.4上拉/下拉电阻是能寄存器PxREN

该寄存器的每一位可以使能相应I/O引脚的上拉/下拉电阻。该寄存器需和输出寄存器配合使用,才能完成上拉/下拉电阻的配置。作为输入的时候一定要配置上拉电阻

0:上拉/下拉电阻禁止; 1:上拉/下拉电阻使能。

P1OUT |=BIT0,P1REN |=BIT0,P1.0设置上拉电阻。

1.2.5输出驱动能力调节寄存器PxDS

PxDS寄存器的每一位可使相关引脚选择全驱动模式(会增强电磁干扰)和次驱动模式(减弱电磁干扰)。默认的是次驱动模式。

0:次驱动模式; 1:全驱动模式。

P1DS |=BIT0,P1.0设置全驱动模式。

1.2.6功能选择寄存器PxSEL

为了减少引脚,将一些为外围模块功能和I/O端口功能复用在一起。PxSEL用来选择引脚I/O端口与为外围模块功能。默认为低电平普通IO。

0:选择引脚为普通I/O功能; 1:选择引脚为外围模块功能。

P1SEL |=BIT0,表示P1.0使用外围模块功能。

1.2.7中断使能寄存器PxIE

该寄存器的8位与该端口的8个引脚一一对应,其中每一位用以控制相应引脚的中断允许。

0:表示中断关闭; 1:表示中断允许。

P2IE |= BIT2,P2.2 开启中断

1.2.8中断触发边沿寄存器PxIES

如果允许Px口的某个引脚中断,还需定义该引脚的中断触发沿。该寄存器的8位分别定义了Px口的8个引脚的中断触发沿。

0:表示上升沿触发; 1:表示下降沿触发。

P2IES |= BIT2,P2.2为下降沿触发

1.2.9中断标志寄存器PxIFG

该寄存器有8个标志位,对应相应的引脚是否有中断请求。如果Px的某个引脚允许中断,同时选择上升沿,则当该引脚发生由低电平向高电平跳变时,PxIFG的相应位就会置位,表明该引脚上有中断事件发生。

我们进入中断子程序后可以查询寄存器那一位为1,从而做相应的处理,中断标志需要软件清零。

0:没有中断请求等待响应; 1:表示有中断请求等待响应。

1.3端口的应用

端口是最常见的外设资源,一般在程序初始化的时候会对端口进行配置。先配置功能选择寄存器PxSEL,是否使用其他外设功能;若为1则去配置相应外设的寄存器,若为0则是使用I/O端口功能。为I/O端口功能则继续配置方向寄存器PxDIR;若为输出(1),就可以配置输出寄存器PxOUT,若为输入(0,需要注意的是作为输入的时候一定要配置上拉电阻。例如P2OUT=0xff; P2REN=0xff;)如果需要中断就可以继续配置中断使能寄存器PxIE;若允许中断,则继续配置中断触发沿选择寄存器PxIES。

使用中断的时候需要注意,P1和P2的中断为多源中断,即P1和P2的8个引脚产生的中断都共用一个中断向量,就是会进入一个中断子程序里面。所以在中断子程序里面我们应该先判断PxIFG,是哪一个引脚触发的中断,然后再去跑相应的程序,最后清除中断标志位。

void main(void)
{WDTCTL=WDTPW+WDTHOLD; //关闭看门P2SEL &= ~BIT2; //使用I/O功能P2DIR &= ~BIT2;   //设置P2.2为输入模式P2IFG &= ~BIT2; //清除P2.2的中断标志 P2IE |= BIT2;  //开启P2.2中断P2IES |= BIT2;   //设置P2.2为下降沿触发P2OUT |= BIT2;   //选择上拉电阻P2REN |= BIT2; //上/下拉电阻使能_enable_interrupt(); //开总中断,可写为_ENIT();while(1);
}#pragma vector = PORT2_VECTOR //固定格式,声明中断向量地址
__interrupt void 中断服务程序名(void)
{//中断处理程序unsigned int temp; //局部变量temp = P2IFG;    //读取中断标志P2IFG = 0x00;  //标志位清零if(temp == 0x04){  //如果 P2.2 产生中断......}
}

MSP430x5xx and MSP430x6xx Family User's Guide (Rev. Q) (ti.com.cn)

MSP430GPIO相关推荐

最新文章

  1. Maven安装、配置、项目创建、编译等相关操作
  2. hdu1285 拓扑序
  3. Python之IO模型
  4. win10电脑如何安装Openssh?开启Server服务?
  5. 深入理解javascript原型和闭包(3)——prototype原型
  6. SQL JOIN连接分类[转]
  7. android socket 框架c#,C#与Android Socket通信
  8. 用javascript实现动态增加DataGrid行
  9. HTC公布第二款区块链手机Exodus 1s:或将于9月前发售
  10. Lettuce替换Jedis操作Redis缓存
  11. NA-NP-IE系列实验4:CLI 的使用与IOS 基本命令(1)
  12. js中改变原数组的方法以及解决改变原数组的方法
  13. GDAL\OGR读取数据示例 C#版本
  14. 【服务器】【个人图床】宝塔安装Chevereto
  15. mysql 两条数据相减_mysql 实现相邻两条数据相减
  16. 深入理解FT,DTFT,DFT 之间的关系
  17. Zipf,Power-laws,Pareto分布
  18. Python分析【崩坏学园2】凝魔纹心所输出
  19. 微信小程序自定义组件中对properties的修改
  20. FT232RL FTDI USB转串口芯片SSOP28 国产替代

热门文章

  1. 医学领域中的计算机,医学领域中计算机技术的应用解析
  2. 2021最新版的成语小程序源码 内附教程
  3. 阿里云发布智能账单功能,让你免费拥有专属的“云产品 消费账单管家”
  4. 天津博物馆镇馆之宝——玉壶春瓶
  5. php 限制图片大小代码,微信小程序在上传图片时如何限制大小(附代码)
  6. VS 2013注释和取消注释的快捷键
  7. 线上教育系统平台,企业如何才能运营呢?
  8. RTT-thread 邮箱的管理方式
  9. FreeRTOS基于任务通知的信号量 事件标志组 消息邮箱
  10. Android 8.1共享系统代理中的热点(LineageOS15.1)