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 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492985.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

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

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430F149内部Flash操作
一般,在单片机中的Flash存储器用于存放程序代码,属于只读型存储器。而在MSP430些列的单片机中,都可以通过内置的Flash控制器擦除或改写任何一段的内容。另外,msp430的单片机内部还专门留有一段Flash区域(information memory),用于存放掉电后需要永久保存的数据。利用430内部的Flash控制器,可以完成较大容量的数据记录、用户设置参数在掉电后的保存等功能。硬件介绍:要对Flash读写,首先要了解MSP430的存储器组织。430单片机的存储器组织结构采用冯诺依曼结构,RAM和ROM统一编址在同一寻址空间中,没有代码空间和数据空间之分。一般430的单片机都统一编址在0-64k地址范围中,只有少数高端
发表于 2020-05-07
MSP430F149内部Flash操作
MSP430 FLASH读写
MSP430 FLASH型单片机的FLASH存储器模块根据不同的容量分为若干段,其中信息存储器SegmengA及SegmentB各有128字节,其他段有512字节。SegmentB的地址是:0x01000h到0x107F,SegmentA的地址是:0x01080h到0x010FFh。其他段的地址根据容量不同,从0xFFFFh开始,每512字节为一段进行分配。FLASH存储器写入数据时,每一位只能由“1”变成“0”,不能由“0”变成“1“,因此,当我们有数据要保存到FLASH存储器时,要先对目标段进行整段擦除操作,擦除操作使的对应段FLASH存储器变成全“1”。下面是擦除FLASH段的子程序,配置好必要的寄存器后,向段中任意地址写入
发表于 2020-05-06
关于Msp430 Flash型单片机内部Flash的操作
1 Msp430Flash型单片机内部Flash存储器介绍MSP430的Flash存储器是可位、字节、字寻址和编程的存储器。该模块由一个集成控制器来控制编程和擦除的操作。控制器包括三个寄存器,一个时序发生器及一个提供编程、擦除电压的电压发生器。Msp430的Flash存储器的特点有:1)产生内部编程电压2)可位、字节、字编程,可以单个操作,也可以连续多个操作3)超低功耗操作4)支持段擦除和多段模块擦除2 Flash存储器的分割Msp430 Flash存储器分成多个段。可对其进行单个字节、字的写入,也可以进行连续多个字、字节的写入操作,但是最小的擦除单位是段。Flash 存储器被分割成两部分:主存储器和信息存储器,两
发表于 2020-05-06
MSP430的JTAG接口和BSW接口
1.JTAG口,JTAG引脚如下定义:单片机TCK——测试时钟输入,接仿真器7脚单片机TDI——测试数据输入,接仿真器2脚单片机TDO——测试数据输出,接仿真器1脚单片机TMS——测试模式选择,接仿真器5脚单片机TRST——测试复位,输入引脚,低电平有效(此引脚可选),接仿真器11脚 2. BSW接口单片机SBWTDIO/RST——测试数据输入输出,接仿真器1脚TDO,其中SBWTDIO和单片机复位RST引脚复用单片机SBWTCK/TEST——测试时钟,接仿真器7脚TCK
发表于 2020-05-06
MSP430的JTAG接口和BSW接口
MSP430F169(四)——浅谈F169看门狗
什么是看门狗在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。看门狗有一个RST管脚,用来复位。看门狗的两种工作模式(一)看门狗模式:看门狗模式是看门狗这个组件的主要功能,(这不是废话嘛,看门狗组件肯定是看门狗啊)提到看门狗,不得不说这个密码保护了(WDTPW watchdog timer password )任何读写操作必须通过他才能正确执行指令
发表于 2020-05-06
MSP430F169(四)——浅谈F169看门狗
MSP430学习的第一个模拟I2C程序
#include <msp430.h>unsigned char I2CBUF;unsigned char checkbit;#define SCL_H   (P10OUT |= BIT2)      // P10.2为SCL#define SCL_L   (P10OUT &= ~BIT2)#define SDA_H   (P10OUT |= BIT1)     //p10.1为SDA#define SDA_L   (P10OUT &= ~BIT1)#define
发表于 2020-05-06
小广播
何立民专栏 单片机及嵌入式宝典

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

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