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)

MSP430是德州仪器(Texas Instruments)推出的一款低功耗微控制器系列要使用MSP430的GPIO(通用输入/输出)功能,你可以按照以下步骤进行配置和操作: 1. 包含头文件:在代码的开头,包含MSP430的GPIO相关头文件,例如`msp430.h`。 ```c #include <msp430.h> ``` 2. 配置GPIO引脚:选择要使用的GPIO引脚,并配置其功能、输入/输出状态和电平状态等。 ```c P1DIR |= BIT0; // 配置P1.0为输出 P1OUT |= BIT0; // 设置P1.0为高电平 P2DIR &= ~BIT3; // 配置P2.3为输入 P2REN |= BIT3; // 启用P2.3的上拉电阻 P2OUT |= BIT3; // 设置P2.3的上拉电阻为上拉 ``` 在上述示例中,我们使用了P1.0和P2.3作为GPIO引脚。`P1DIR`和`P2DIR`寄存器用于配置引脚的方向(输入或输出),`P1OUT`和`P2OUT`寄存器用于设置引脚的电平状态。 3. 读取和写入GPIO状态:根据需要,你可以读取和写入GPIO引脚的状态。 ```c if (P1IN & BIT0) // 读取P1.0引脚的状态 { // P1.0引脚为高电平 } else { // P1.0引脚为低电平 } P2OUT ^= BIT3; // 切换P2.3引脚的电平状态 ``` 在上述示例中,我们使用了`P1IN`寄存器来读取P1.0引脚的状态。使用位运算符和位掩码(`BIT0`)可以检查特定位的状态。使用异或运算符(`^=`)可以切换引脚的电平状态。 这只是一个简单的示例,MSP430提供了更多丰富的GPIO功能和配置选项,例如中断、外部时钟源等。你可以根据具体的应用需求进一步探索和使用这些功能。 希望这些信息对你有帮助!如果你有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值