MSP430使用指南12 -> GPIO

发布者:科技革新者最新更新时间:2020-03-31 来源: eefocus关键字:MSP430  使用指南  GPIO 手机看文章 扫描二维码
随时随地手机看文章

GPIO即通用输入输出接口,是MCU最基本的功能,可以控制I/O口的高低电平,输入输出或映射到其他模块等功能。


如下图所示,为MSP430FR2355芯片的引脚图:

在图中,每个引脚后标注的则是每个引脚具备的复用功能,GPIO是基本功能,除去电源,地,时钟等引脚,每个引脚都可作为通用IO口使用,那么如何按照自己的要求配置每个引脚的功能呢?


下面就描述下GPIO引脚相关的寄存器(MSP430FR2xx/FR4xx):


注:并非每个MSP430 MCU都包含下属所有的寄存器,根据MCU功能的复杂性决定,具体包含的寄存器名称和数量,请查看每个芯片的datasheet和user’s guide。


首先先整体看一下GPIO口总共有哪些寄存器:

因为P1,P2,P3等寄存器名字都相似,因此,下面讲述时采用Px表示。


PxIN

 

输入寄存器(只读),代表的是当前GPIO接口的状态,0时代表低电平,1时代表高电平。


因此,在将IO口设置成输入状态时,通过这个寄存器去了解IO口的电平状态。


PxOUT

输出寄存器(读写),有两个功能:


 1.在IO口为输出状态时,决定IO口输出的状态,0时输出低电平,1时输出高电平,且可以读取此寄存器来了解当前设置的IO输出电平状态。


 2.在IO口为输入状态时,决定IO口的上拉或下拉状态,不过必须上/下拉使能寄存器使能时,才能实现上拉或下拉的效果。


PxDIR

方向寄存器(读写),1时表示output,0时表示input,默认是0。


PxREN

上/下拉电阻使能寄存器,当IO口作为输入使用时,可以使能内部的上/下拉电阻,此寄存器为使能,决定上拉还是下拉的寄存器是PxOUT。


PxSEL0

功能选择寄存器0,选择复用功能,和PxSEL1配合,最多可以选择三个复用功能,一般来说在因脚伤复用功能按照顺序描述,比如:P2.0/TB1.1/COMP0.O,表示TB1.1是第一复用功能,COMP0.O是第二复用功能,因此:P2SEL0 0bit = 1,P2SEL1 0bit = 0时选择TB1.1功能;P2SEL0 0bit = 0,P2SEL1 0bit = 1时选择COMP0.O功能。每个引脚具体的功能,请查看datasheet。


PxSEL1

功能选择寄存器1,选择复用功能,和PxSEL0配合使用,并非所有MCU都有此寄存器,一些简单的,每个引脚最多只有一个服用功能的MCU不会有这个寄存器,具体情况请查看每个MCU的datasheet。


PxSLEC

 

编码选择寄存器,简单来说,这个寄存器是和PxSEL0,PxSEL1配合使用的,因为在设置功能过程中,需要设定这两个寄存器,因此会有个先后顺序,可能在设置了PxSEL0后产生了中断,在执行中断函数时,并没有设置PxSEL1寄存器,因此这段时间可能会出现用户不想看到的问题,PxSELC这个寄存器就是解决同步问题的,当PxSELC这个寄存器对应的位置1时,那么会同时把PxSEL0和PxSEL1寄存器的值写入,避免出现上述问题。


PxIES

中断边沿选择寄存器,当使能IO口中断时,此寄存器决定着中断触发的方式,0表示上升沿触发,1表示下降沿触发。


PxIE

中断使能寄存器,置1时使能相应引脚的中断。


PxIFG

中断标志寄存器,在产证满足PxIES所描述的状态时,会置位这个标志位,即使不使能中断PxIE寄存器,也会置位这个PxIFG标志寄存器,PxIE指示决定会不会产生中断而已。


同时需要注意PxIFG在一些情况下可能会置位,比如:

PxIV

中断向量寄存器(只读),MSP430 MCU的GPIO中断对于Px口是一个向量,因此在进入后需要判断时Px口中的哪一个产生的,比如Px.0, 故需要查询这个寄存器,从上图描述中也可以看到,Px.0-Px.7的中断优先级是不一致的,0位最高,7位最低。


最最需要注意的一点:对于FR系列MCU,在设置完GPIO口功能后,一定要清除PM5CTL0寄存器中的LOCKLPM5位,这一位默认是1,即设置所有IO口位高阻态,不清除的话,GPIO功能无法使用,Flash系列的默认是0,因此不需要清除。


清除程序:

  PM5CTL0 &= ~LOCKLPM5;


在讲解完GPIO相关的寄存器后,我们给一个例程,功能是通过一个输入口中断方式去驱动一个输出口改变电平状态:


#include

 

int main(void)

{

    WDTCTL = WDTPW | WDTHOLD;               // Stop watchdog timer

    // Configure GPIO

    P1OUT &= ~BIT0;                         // Clear P1.0 output latch for a defined                                             // power-on state               

    P1DIR |= BIT0;                          // Set P1.0 to output direction

    P1OUT |= BIT3;                          // Configure P1.3 as pulled-up

    P1REN |= BIT3;                          // P1.3 pull-up register enable

    P1IES |= BIT3;                          // P1.3 Hi/Low edge

    P1IE |= BIT3;                           // P1.3 interrupt enabled

    // Disable the GPIO power-on default high-impedance mode

    // to activate previously configured port settings

    PM5CTL0 &= ~LOCKLPM5;

    P1IFG &= ~BIT3;                         // P1.3 IFG cleared

 

    while(1)

    {

        __bis_SR_register(LPM3_bits | GIE); // Enter LPM3 w/interrupt

        __no_operation();                   // For debug

        P1OUT ^= BIT0;                      // P1.0 = toggle

    }

}

 

// Port 1 interrupt service routine

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=PORT1_VECTOR

__interrupt void Port_1(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(PORT1_VECTOR))) Port_1 (void)

#else

#error Compiler not supported!

#endif

{

    P1IFG &= ~BIT3;                         // Clear P1.3 IFG

    __bic_SR_register_on_exit(LPM3_bits);   // Exit LPM3

}

关键字:MSP430  使用指南  GPIO 引用地址:MSP430使用指南12 -> GPIO

上一篇:MSP430使用指南8 -> WDT看门狗模块
下一篇:MSP430使用指南31 -> BSL

推荐阅读最新更新时间:2024-11-07 12:05

采用MSP430F247单片机实现TMP275测温仪的I2C模块的连接
1 引言 温度传感器TMP275可直接输出数字信号,而无需取样、放大、滤波和模数信号的转换,可以直接传输给单片机信号处理系统;而且输出信号分辨率可以达到0.0625,测温精度±0.5℃,若使用MSP430F247做控制器,可直接与其自带的I2C模块相连,使用方便。 2 电路设计 2.1 总体方案设计 该测温仪的硬件结构由温度测量、核心控制电路、显示电路和电源电路等4部分组成。总体方案框图如图l所示。 2.2 单元模块设计 2.2.1 核心控制电路 核心控制电路采用MSP4313F247完成数据的测量和处理,实现温度测量和控制输出显示功能,电路如图2所示,其中的P3.1.P3.2分别是MSP430F247自带I2C模块的S
[单片机]
采用<font color='red'>MSP430</font>F247单片机实现TMP275测温仪的I2C模块的连接
msp430单片机控制步进电机带显示程序
MSP430 单片机 控制步进电机带显示程序 #include msp430x22x4.h #define uchar unsigned char #define uint unsigned int #define comm 0 #define dat 1 #define sclk_1 P4OUT|=0x01 //sclk=1; 001----p4.0 #define sclk_0 P4OUT&=0x06 //sclk=0; 110----p4.1 #define std_1 P4OUT|=0x02 //std =1; 010 #define std_0 P4OUT&=0x05 //s
[单片机]
MSP430G2553默认的MCLK、SMCLK、ACLK时钟频率
摘要:   本文将介绍如何从手册中查找出G2553各个时钟的默认时钟频率,以及使用定时器中断方法测出各个时钟频率。实验所用平台是MSP-EXP430G2 LaunchPad,MCU为MSP430G2553。 1、查阅datasheet。   手册原文:After a PUC,MCLK and SMCLK are sourced from DCOCLK at ~1.1Mhz (see the device-specific data sheet for parameters) and ACLK is sourced from LFXT1CLK in LF mode with an internal load capacita
[单片机]
<font color='red'>MSP430</font>G2553默认的MCLK、SMCLK、ACLK时钟频率
基于嵌入式WinCE与MSP430单片机多串口通信设计
目前WinCE嵌入式与MSP430单片机在仪器仪表、工业控制、移动设备等有着广泛的应用。在很多复杂的应用场合比如多点温度采集、多点转速采集,一个单片机不能满足要求,需要多台单片机协同工作,此时,多台单片机通信是实现的关键。以基于WinCE嵌入式设备为核心,取代传统意义上的PC机,采用TCP/IP通信机制搭建的串口通信系统,结合嵌入式设备和网络技术的优点,将各独立系统复杂的通信协议、数据格式进行统一的转化,特别适用于远程、多机串口通信,具有重要的使用价值和应用前景。 1 硬件平台 1)WinCE嵌入式采用友善之臂mini2440开发板作为硬件平台,mini2440开发板主要的硬件资源包括:SamsungS3C2440A,主频4
[单片机]
基于嵌入式WinCE与<font color='red'>MSP430</font>单片机多串口通信设计
STM32F407 纯寄存器操作GPIO,串口,中断(专治花里胡哨)
配置时钟,延时函数,均使用正点原子的SYSTEM文件 硬件:正点原子探索者,STLINK调试 系统时钟配置步骤 正点原子,时钟配置函数(我都是直接把sys.c和sys.h拷贝过来,直接使用) //设置向量表偏移地址 //NVIC_VectTab:基址 //Offset:偏移量 void MY_NVIC_SetVectorTable(u32 NVIC_VectTab,u32 Offset) { SCB- VTOR=NVIC_VectTab|(Offset&(u32)0xFFFFFE00);//设置NVIC的向量表偏移寄存器,VTOR低9位保留,即 保留。 } //时钟设置函数 //Fvco=Fs*(
[单片机]
STM32F407 纯寄存器操作<font color='red'>GPIO</font>,串口,中断(专治花里胡哨)
使用MSP430G2 LaunchPad开发板驱动伺服电机的方法
在本篇文章中,我们将主要介绍一些有关伺服电机的基础知识以及如何将伺服电机与MSP430G2 LaunchPad开发板进行连接。 MSP-EXP430G2是德州仪器提供的开发工具,也称为LaunchPad,用于学习和实践如何使用其微控制器。该开发板属于MSP430产品线类别,我们可以对所有MSP430系列微控制器进行编程。 伺服电机和PWM 在详细讨论之前,首先我们应该了解伺服电机。 伺服电机包含了直流电机、位置控制系统和转动机构。伺服电机在现代世界有很多应用,因此它们有不同的形状和尺寸。我们将在本篇文章中使用的是SG90伺服电机,它是最流行且最便宜的电机之一。 SG90是一款180度伺服器。所以用这个伺服我们可以将轴从0-
[单片机]
使用<font color='red'>MSP430</font>G2 LaunchPad开发板驱动伺服电机的方法
逻辑器件的使用指南
1:多余不用输入管脚的处理 在多数情况下,集成电路芯片的管脚不会全部被使用。例如74ABT16244系列器件最多可以使用16路I/O管脚,但实际上通常不会全部使用,这样就会存在悬空端子。所有数字逻辑器件的无用端子必须连接到一个高电平或低电平,以防止电流漂移(具有总线保持功能的器件无需处理不用输入管脚)。究竟上拉还是下拉由实际器件在何种方式下功耗最低确定。 244、16244经测试在接高电平时静态功耗较小,而接地时静态功耗较大,故建议其无用端子处理以通过电阻接电源为好,电阻值推荐为1~10K。 2:选择板内驱动器件的驱动能力,速度,不能盲目追求大驱动能力和高速的器件,应该选择能够满足设计要求,同时有一定的余量的器件,这样
[模拟电子]
一种基于GPRS的心电无线监护仪
  心脏病是威胁人类生命与健康的最大顽疾, 其具有突发性、难预测、死亡率高等特点,因此对 患者的心电信号进行实时监测显得尤为重要? 。 大部分患者需要能随时提供心电监护的仪器,并 且使其工作和生活不会受到影响。基于这种转 变,无线心电监护系统的研究在近年来引起了国 内外的高度重视。例如李享元 等人研制的基于 GPRS的远程移动心电监护系统,Rune Fensli 等 人研制的无线便携式心电监护系统,Salvador 等 人研制了一种对于出院患者进行心电跟踪监护的 系统。   由于大多数心电监护仪成本较高,操作复杂,不 宜在家庭中普及,因此,作者研制一种能够实时采 集、分析及报警的家庭心电监护仪,患者可以通过佩 戴一个便携式的仪器
[单片机]
一种基于GPRS的心电无线监护仪
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved