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. 安装oracle并且小总结oracle sql
  2. 记录一些比较有趣的网站,来给自己的网站设计积累思想
  3. reactor多线程模型_Netty运用Reactor模式到极致
  4. Cheat_Sheet ---Keras、Matlab、Matplotlib、Numpy、Pandas、Scikit-Learn、SciPy
  5. 【ASP.NET Core 沉思录】CreateWebHostBuilder 是一个 Convension
  6. [flask]gunicorn配置文件
  7. 宝塔 运程mysql_宝塔面板使用详解(极简搭建各种环境、mysql数据库等)
  8. Unity 3D中 Ulua-UGUI简单的Demo——热更新的具体流程、使用说明
  9. eclipse 启动 tomcat : Multiple Contexts have a path of /SOAProject
  10. java防xss攻击_java 防止xss攻击
  11. 太上老君的炼丹炉之分布式 Quorum NWR
  12. 给合肥市社保局和社保明细打印系统提一提改进建议
  13. 小白上路之javascript数组的介绍
  14. Java返回Json文件
  15. 小程序怎么做线下推广
  16. phpstudy集成环境或apache环境下 php 获取不到Authorization
  17. 黑白电影变为彩色电影?这个方法分享给你
  18. python基础-闰年判断
  19. 动态规划解决小青蛙跳台阶问题
  20. Morse Code-神奇而朴实的摩斯电码

热门文章

  1. 初入职场必备职业素养
  2. 抖音上用计算机弹,抖音计算器音乐乐谱有哪些_抖音计算器音乐乐谱详细介绍_游戏吧...
  3. Python模拟电影院自动售票机
  4. docker、oci、runc以及kubernetes梳理
  5. python判断excel表格中的重复值
  6. word 技巧之一:给word文档添加目录、查看word文档结构图
  7. 例4.8 求3个数中最大的数(分别考虑整数、双精度数、长整数的情况),用函数重载方法。
  8. 分类算法如何绘制roc曲线,如何绘制knn模型的ROC曲线
  9. Qt获取EXE可执行文件的上一级目录下的文件
  10. 如何在计算机中添加家庭组,家中两台电脑怎么传文件?win 7创建家庭组轻松实现...