MSP430F2619 --- GPIO引脚

一、基础介绍

       MSP430多达  8个数字 I/O端口 ,P1 - P8 (不同封装引脚也不一样,需看具体型号), 每个端口具有  8 个 I/O 引脚 。每个引脚都可进行单独的配置 。

        注意 :只有 端口 1 和 端口 2 具有中断功能。并且其中每个 I/O引脚都可单独启用中断 ,并配置 中断触发信号 。

        注意 :所有 P1  I/O线路 都会获得  一个中断向量 。 所有 P2  I/O 线路 都会获得一个 不同的中断向量

        注意 :未使用的 I/O 引脚 应配置为 I/O功能 、输出方向 、并保持未连接状态 。  或者 集成的上拉/下拉电阻器 可通过 置位未使用的引脚 PxREN位  来启用防止悬空输入。

二、引脚振荡器

        某些MSP430器件有一个内置于某些信号内的引脚振荡器功能 ,该功能可用于电容式触控传感应用 ,无需使用外部无源器件 。 

        电容式传感器可被直接连接至 MSP430引脚 。   

        引脚大约 0.7V 的稳健 ,典型内置滞后。

        当启用引脚振荡器功能时,其他的引脚配置被覆盖 。输出驱动器关闭,而弱上拉/下拉 启用并由引脚本身的电压电平控制 。

        I/O上的电压被馈入引脚的施密特触发器 ,然后路由到一个计时器。与计时器的连接时特定于器件的,因此在器件特定数据表中进行了定义 。

        施密特触发器输出被反相 ,然后决定是启用上拉还是下拉 。由于反相,一旦选择了引脚振荡器引脚配置,引脚就开始振荡 。 在路由到计时器时钟输入或计时器捕捉通道之前 ,一些引脚振荡器输出通过逻辑或运算进行组合 。  因此 ,一次只能启用一个引脚振荡器 每个引脚的振荡频率由引脚上的负载和 I/O类型定义 。具有模拟功能的 I/O 通常显示比纯数字I/O 更低的振荡频率 。

        无外部负载的引脚显示 1MHz 至 3MHZ 的典型振荡频率

        触摸板电容(外部容性负载) 的变化会对引脚振荡器频率产生影响。靠近的指尖会增加触摸板的电容,从而导致由更长充电时间引起的较低自身振荡频率 。可以直接在内置计时器通道中捕捉振荡频率。

三、寄存器资源

1、 端口x 输入寄存器     PxIN寄存器    x = 1 - 8

PxIN : 端口输入 ,每个位对应端口x上的每个通道      0 --- 输入低电平     1 --- 高电平

2、 端口x输出寄存器       PxOUT 寄存器        x = 1 - 8

PxOUT : 端口x输出 ,每个位对应端口x的一条通道 。 

                当 I/O 被配置为 输出模式时       0 --- 输出低电平        1 --- 输出高电平

                当 I/O 被配置为 输入模式并使能上/下拉时 :   0 --- 下拉      1 --- 选择上拉

3、 端口x 方向寄存器    PxDIR 寄存器      x = 1 - 8

PxDIR :端口x的方向 ,每个位对应端口x的一条通道。   0 --- 配置为 输入     1 ---- 配置为输出

4、 端口x 中断标志寄存器    PxIFG寄存器     x = 1/2

PxIFG :端口x中断标志 ,每个位对应端口x的一条通道 。    0 --- 无中断挂起      1 --- 有

注意 :对 P1OUT 、P1DIR 、P2OUT 、P2DIR 进行写入可能会引发设置相应的PxIFG

5、端口x 中断边沿选择寄存器  PxIES寄存器    x = 1/2

PxIES :端口x中断边沿选择 。每个位对应一条通道。  0 --- PxIFG标志 上升沿置1    1 --- 下降沿

注意 :对 PxIES写入时,也可能会引发相应的 中断标志

6、 端口x 中断使能寄存器    PxIE寄存器     x = 1/2

PxIE :端口x中断使能,每个位对应一条通道。  0 --- 中断禁止     1 --- 中断使能

7、 端口x 功能选择寄存器     PxSEL寄存器   PxSEL2 寄存器  x = 1 - 8

PxSEL  /  PxSEL2 :端口功能选择,每个位对应一条通道。  两者配合使用设置引脚功能

                PxSEL2 / PxSEL    :   

                0        0 ---- I/O功能       

                0        1 --- 主要模块功能                              

                1        0 ---  第二模块功能    ,保留  

                1        1 ---  第三模块功能 

        RxSEL :选择 I/O功能 和 其他模块功能

        PxSEL2 :选择主模块功能 和 辅模块功能

注意 :当 P1SELx  和  P2SELx 任何位置1 后 ,会禁用相应引脚的中断功能

8、端口x 上拉 或 下拉电阻使能寄存器     PxREN寄存器     x = 1 - 8

PxERN :上拉下拉电阻使能 。  每个位对应一条通道 。 当端口 配置为输入时 ,可设置该位。

                0 ---- 禁用 上拉 下拉       1 --- 使能 上拉 / 下拉

注意 :不建议在 PxSEL = 1时,使能上拉下拉 ,该组合可能会导致不需要的电流流过内部电阻器

四、各引脚功能选择 配置

1、 P1 端口

2、P2端口

3、P3端口

4、P4端口

5、P5端口

6、P6端口

五、例程

#include <msp430.h>
/*
 * 上电初始化时:
 * (1)默认GPIO为 通用I/O功能 ,输入方向
 *
 * 建议未使用的引脚配置为 :I/O通用功能 、输出方向
 * 本例程利用查询和中断的两种方式 处理输入信号。
 */
int main(void)
{
    WDTCTL = WDTPW + WDTHOLD;   //STOP  WDT
    //初始化配置为 全部I/O功能 ,输出低电平
    P1DIR = 0xFF;                   //全部配置为输出
    P1OUT = 0;                      //输出模式中输出低电平
    P2SEL = 0;                      //P2全员 I/O功能
    P2DIR = 0xFF;
    P2OUT = 0;
    P3DIR = 0xFF;
    P3OUT = 0;
    P4DIR = 0xFF;
    P4OUT = 0;
    P5DIR = 0xFF;
    P5OUT = 0;
    P6DIR = 0xFF;
    P6OUT = 0;
/*
 * 注意 PA = Port7 + Port8 ,为16bit ,其他用法与GPIO口一样
 * 如 :PADIR 、PAOUT等
 */

/*  循环查询方式判断输入
    P1DIR |= 0x01;              //P1.0 输出方向
    P1DIR &= ~0x10;            //P1.4输入方向
    while(1)
    {
        if(P1IN & 0x10)         //P1.4 默认输入方向
            P1OUT |= 0X01;
        else
            P1OUT &= ~0x01;
    }
*/
// 利用中断判断输入
    P1DIR |= 0x01;          //输出方向
    P1DIR &= ~0x10;         //P1.4 输入方向
    P1IE |= 0x10;           //P1.4中断使能
    P1IES |= 0x10;          //下降沿触发中断
    P1IFG &= ~0x10;         //清空 P1.4中断标志位

    __bis_SR_register(LPM4_bits + GIE); //开启总中断 ,和LMP4低功耗模式

}

#pragma vector = PORT1_VECTOR   //P1端口中断
__interrupt void Port_1(void)
{
    P1OUT ^= 0x01;
    P1IFG &= ~0x10;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值