MSP430GPIO
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相关推荐
最新文章
- Maven安装、配置、项目创建、编译等相关操作
- hdu1285 拓扑序
- Python之IO模型
- win10电脑如何安装Openssh?开启Server服务?
- 深入理解javascript原型和闭包(3)——prototype原型
- SQL JOIN连接分类[转]
- android socket 框架c#,C#与Android Socket通信
- 用javascript实现动态增加DataGrid行
- HTC公布第二款区块链手机Exodus 1s:或将于9月前发售
- Lettuce替换Jedis操作Redis缓存
- NA-NP-IE系列实验4:CLI 的使用与IOS 基本命令(1)
- js中改变原数组的方法以及解决改变原数组的方法
- GDAL\OGR读取数据示例 C#版本
- 【服务器】【个人图床】宝塔安装Chevereto
- mysql 两条数据相减_mysql 实现相邻两条数据相减
- 深入理解FT,DTFT,DFT 之间的关系
- Zipf,Power-laws,Pareto分布
- Python分析【崩坏学园2】凝魔纹心所输出
- 微信小程序自定义组件中对properties的修改
- FT232RL FTDI USB转串口芯片SSOP28 国产替代
热门文章
- 医学领域中的计算机,医学领域中计算机技术的应用解析
- 2021最新版的成语小程序源码 内附教程
- 阿里云发布智能账单功能,让你免费拥有专属的“云产品 消费账单管家”
- 天津博物馆镇馆之宝——玉壶春瓶
- php 限制图片大小代码,微信小程序在上传图片时如何限制大小(附代码)
- VS 2013注释和取消注释的快捷键
- 线上教育系统平台,企业如何才能运营呢?
- RTT-thread 邮箱的管理方式
- FreeRTOS基于任务通知的信号量 事件标志组 消息邮箱
- Android 8.1共享系统代理中的热点(LineageOS15.1)