前言:
最近几天我一直在学习这个MSP430G2,刚开始的时候看了我们队友经验分享算是初步了解了MSP430,然后在电赛网站上和其他渠道上找到很多关于MSP430G2的资料,我最近刚把定时器那一块学完,前期一直没有总结,现在我想总结一下算是做个笔记,今天先说一下GPIO。
MSP430 GPIO 概述 :
MSP430 的每组 GPIO 都是由对应的寄存器控制的,其中有 3 个寄存器是最重要的,分别是方向寄存器(PxDIR)、输出寄存器(PxOUT)和输入寄存器(PxIN)。方向寄存器决定了引脚 的功能是输入还是输出;输出和输入寄存器则直接关联引脚的电平状态。
1_方向寄存器(PxDIR)
在 MSP430 中,每个 I/O 口都可以被单独配置成输入或者输出状态。是配置成输入还是输出 是由方向寄存器(也叫 DIR 寄存器)决定的。方向寄存器为 0 是输入,为 1是输出。例如 你想 P1.0配置成输出可以这样P1DIR |= 0x01;
如果是输入可以这样 P1DIR &= ~0x01。
2_输出寄存器(PxOUT)
在方向寄存器将 I/O 口配置为输出以后,就可以通过写输出寄存器 PxOUT 来给端口赋值了。 例如你想把P1.0 拉高,可以直接写 P1OUT |= 0x01。
3_输入寄存器(PxIN)
I/O输入这里要比输出复杂一点,因为当我们把引脚设置为输入的时候,引脚处于浮动状
态,也就是说即有可能是高电平也有可能是低电平。因此一般我们在引脚作为输入时会通
过一个电阻将该引脚接到电源或地,这样就形成了一个弱上拉/下拉状态,接了上拉/下拉电阻以后,输入引脚的电平将会稳定一些,而当外部电路的高/低电平接 到引脚上时,该引脚又可以根据外部电平改变状态。
举个例子:我要把P1.0设为输入
P1DIR &= ~0x01; // 设置P1.0为输入
P1OUT |= 0x01; // 设置P1.0为弱上拉
P1REN |= 0x01; // 使能弱上拉电阻
3_ GPIO 引脚复用
引脚的复用,就是引脚的多次使用,将 GPIO 和其他外设放在一个引脚上,使用的时候通过寄存器来选择用哪一个功能。
MSP430G2553 有 PxSEL 和 PxSEL2 两个功能选择寄存器,它们两个再加上 PxDIR 寄存器配合起来可以选择多个引脚功能。
4_GPIO实验:
题目: 按键输入,控制LED灯的亮灭:
实验程序如下:
实验现象:
开始现象: 按键按下灯的状态改变: