MSP432--通用I/O端口

最新更新时间:2022-08-05来源: csdn关键字:MSP432  通用I  O端口 手机看文章 扫描二维码
随时随地手机看文章

I/O端口是单片机最常用的外设模块,可直接用于输入/输出,也可为单片机应用系统扩展提供必要逻辑控制信号。        


MSP432单片机最多可以提供11个 通用I/O端口(P1-P10与PJ):


大部分端口有8个管脚,少数端口管脚少于8。

每个I/O管脚都可以独立设置为输入or输出方向。

每个I/O管脚都可独立地读取or写入。

所有端口寄存器都可被独立地置位or清零。

每个独立端口都可以进行字节访问。

一、端口P1、P2、P3、P4、P5、P6

端口P1-P6具有输入/输出、中断、外部模块功能,可通过各自的9个控制寄存器的设置来实现:


1. 输入寄存器PxIN


        CPU扫描I/O引脚信号的只读寄存器。用户不能对其写入,只能通过读取该寄存器的内容获取I/O端口的输入信号,此时引脚的方向必须选定为输入。


        0---该引脚输入为低;1---该引脚输入为高


2. 输出寄存器PxOUT


        (1)该寄存器为I/O端口的输出缓冲寄存器。其内容可以像操作内存数据一样写入,以达到改变I/O口输出状态的目的。在读取时输出缓存的内容与引脚方向定义无关。改变方向寄存器的内容,输出缓存的内容不受影响。

        0---该引脚输出为低;1---该引脚输出为高

        

        (2)如果引脚为I/O功能、输入模式并且上拉/下拉电阻使能,该寄存器内容决定上拉or下拉电阻。

        0---下拉电阻;1---上拉电阻

3. 方向寄存器PxDIR

        相互独立的8位分别定义了8个引脚的输入/输出方向。8位在PUC之后都被复位。使用输入或者输出功能时,应该先定义端口的方向,输入/输出才能满足设计者的要求。作为输入时,只能读;作为输出时,可读可写。

        0---输入模式;1---输出模式

4. 上拉/下拉电阻使能寄存器PxREN

        该寄存器的每一位可以使能相应I/O引脚的上拉/下拉电阻。该寄存器需和输出寄存器配合使用,才能完成上拉/下拉电阻的配置。

         0---上拉/下拉电阻禁止;1---上拉/下拉电阻使能

5. 输出驱动能力调节寄存器PxDS

         PxDS寄存器的每一位可使相关引脚选择全驱动模式和次驱动模式(减弱驱动能力)。默认的是次驱动模式。

        0---次驱动模式;1---全驱动模式。

6. 功能选择寄存器PxSEL

        P1~P6端口还有其他片内外设功能,为了减少引脚,将这些功能与芯片外的联系通过复用P1~P6 引脚的方式来实现。PxSEL用来选择引脚的I/O端口功能与外围模块功能.

        0---选择引脚为普通I/O功能;1---选择引脚为外围模块功能。

7. 中断使能寄存器PxIE

8. 中断触发边沿选择寄存器PxIES

9. 中断标志寄存器PxIFG

二、端口P7、P8、P9、P10、PJ

         这些端口没有中断能力,其余功能与P1~P6端口一样,能实现输入/输出功能和外围模块能。每个端口有6个寄存器供用户使用,用户可通过这6个寄存器对他们进行访问和控制。每个端口的6个寄存器分别为:输入寄存器(PxIN)、输出寄存器(PxOUT)、方向选择寄存器(PxDIR)、输出驱动能力调节寄存器(PxDS)、上拉/下拉电阻使能寄存器(PxREN)和功能选择寄存器(PxSEL)。具体用法同P1~P6端口。

三、GPIO配置一般步骤:

step1: 配置功能选择寄存器PxSEL


step2: 若为I/O端口功能,配置方向寄存器PxDIR


step3: 配置上拉/下拉电阻使能寄存器PxREN


step4: 配置输出寄存器PxOUT。


(若为输入,配置中断使能寄存器PxIE;若允许中断,继续配置中断触发沿选择寄存器PxIES。)


四、经典点亮LED

#include "msp.h"

#include "../inc/Clock.h"

#include

 

// built-in red LED connected to P2.0

// built-in green LED connected to P2.1

// built-in blue LED connected to P2.2

// Color    LED(s) Port2

// dark     ---    0

// red      R--    0x01

// blue     --B    0x04

// green    -G-    0x02

// yellow   RG-    0x03

// sky blue -GB    0x06

// white    RGB    0x07

// pink     R-B    0x05

#define RED       0x01

#define GREEN     0x02

#define BLUE      0x04

#define yellow    0x03

#define skyblue  0x06

#define white     0x07

#define pink      0x05

 

void Port2_Init(void){

  P2->SEL0 = 0x00;

  P2->SEL1 = 0x00;                        // configure P2.2-P2.0 as GPIO

  P2->DS = 0x07;                          // make P2.2-P2.0 high drive strength

  P2->DIR = 0x07;                         // make P2.2-P2.0 out

  P2->OUT = 0x00;                         // all LEDs off

}

 

void Port2_Output(uint8_t data){        // write all of P2 outputs

  P2->OUT = data;

}

 

/**

 * main.c

 */

void main(void)

{

//WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; // stop watchdog timer

    Clock_Init48MHz();

    Port2_Init();

 

    while(1)

    {

        Port2_Output(RED);

        Clock_Delay1ms(1000);

        Port2_Output(GREEN);

        Clock_Delay1ms(1000);

        Port2_Output(BLUE);

        Clock_Delay1ms(1000);

        Port2_Output(yellow);

        Clock_Delay1ms(1000);

        Port2_Output( skyblue );

        Clock_Delay1ms(1000);

        Port2_Output(pink );

        Clock_Delay1ms(1000);

        Port2_Output(white );

        Clock_Delay1ms(2000);

    }

}

关键字:MSP432  通用I  O端口 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic618235.html

上一篇:MSP432库函数输出多路任意占空比PWM波
下一篇:MSP432E401Y-串口输出

推荐阅读

MSP432使用步进电机
其实是电赛练手题里有一个1分钟转一圈的要求,就算我把占空比改到最小,也无法办到,证明普通电机无法办到这一点,只好用到步进电机。同时我们还要一个步进电机驱动,就是之后图片的大黑盒子DM542,大概100大洋左右。代码部分设置TIMER_A输出pwmTimer_A_PWMConfig TIM0_PwmConfig2 = { TIMER_A_CLOCKSOURCE_SMCLK, TIMER_A_CLOCKSOURCE_DIVIDER_16, 7000, TIMER_A_CAPTURECOMPARE_REGISTER_2, TIMER_A_OUTPUTMODE_RE
发表于 2022-08-10
<font color='red'>MSP432</font>使用步进电机
MSP432笔记——按键中断
GPIO按键外部中断所用板卡 MSP432P401R LaunchPad按键电路图按键连接GPIO P1.1 P1.4按键按下时,对应IO变化为低电平,按键必须使用上拉电阻程序编写使用库函数 driverLibmain中需要的步骤{设置IO输入/输出方向,带上拉电阻的输入模式清除中断标识位,在配置时就需要清除标志位设置中断触发边沿,上升沿/下降沿使能GPIO中断使能总中断(3个中断函数)}main源码int main(void){ /* Stop Watchdog */ MAP_WDT_A_holdTimer(); //GPIO Interrupt test GPIO_setAsInputPinWithPullUpResis
发表于 2022-08-10
<font color='red'>MSP432</font>笔记——按键中断
MSP432笔记——TIM定时器中断
使用driverlib库函数以TA3为例前期配置时钟源信号源电压等级flash //Flash FlashCtl_setWaitState(FLASH_BANK0,1); FlashCtl_setWaitState(FLASH_BANK1,1); //PCM state PCM_setPowerState(PCM_AM_LDO_VCORE1); //CS configure CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_48);配置定时器 Config参数配置结构体 config开始定时器 start使能定时器中断 (清空标志位、打开定时器的中断) Timer_A_UpMod
发表于 2022-08-10
MSP432笔记——单路ADC采样
配置ADC引脚配置使能ADC模块,初始化ADC模块单路转化配置,转化存储器配置使能采样时钟,使能转化中断使能,开启总中断开始转化 //enable ADC module ADC14_enableModule(); ADC14_initModule(ADC_CLOCKSOURCE_MCLK,ADC_PREDIVIDER_1,ADC_DIVIDER_1,0); //gpio P5.5 GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,GPIO_PIN5,GPIO_TERTIARY_MODULE_FUNCTION); //ADC Mem ADC14_configu
发表于 2022-08-10
基于MSP432的中断练习
/*MSP432:基于寄存器编程:利用P1.1和P1.4引脚外部中断,实现对LED灯亮灭的控制。P1.1和P1.4引脚连接S1和S2按键,该按键按下将触发引脚中断,P2.1和P2.2引脚分别连接连个LED灯,当按键P1.1被按下后,P2.1引脚LED灯的亮灭状态将会发生翻转,当按键P1.4按下后,P2.2引脚的电平将发生翻转。*///中断服务程序extern void PORT1_IRQHandler(void){ if(P1IFG & BIT1) { P2OUT ^= BIT1; P1IFG &= ~BIT1; } if(P1IFG & BIT4) { P2OUT ^= BIT2; P1IFG &
发表于 2022-08-10
基于<font color='red'>MSP432</font>的中断练习
MSP432-SPI主从通信
编写程序实现MSP432P401r单片机中eUSCI模块之间的三线制SPI通信。其中,一个eUSCI_B0模块作为主机,另一个eUSCI_B2模块作为主机,主机从0X01开始发送递增字节,从机将接收到正确的字节时,P1.0LED灯会闪烁。同时,从机接收到的数据又会发回给主机,主机接收到正确数据,P2.2LE灯会闪烁:要求:三线,8位数据,空闲位高电平,高位优先:#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/* Standard Includes */#include <stdint.h>#include <stdbool.h>uint
发表于 2022-08-10
小广播
实战 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved