MSP432 GPIO输出、点灯、跑马灯

MSP432P401R基础使用

一、GPIO输出 点灯 跑马灯

(一)GPIO输出

打开芯片数据手册(msp432p401r)第17页的表详细描述了对应引脚的GPIO功能

1.代码
  • 配置GPIO模式:
GPIO_setAOutputPin(Port,pin)//设置GPIO为输出模式
  • 设置高低电平
GPIO_setOutputHoghOnPin(Port,Pin)//设置GPIO为高电平
GPIO_setOutputLowOnPin(Port,Pin)//设置GPIO为低电平
GPIO_toggleOutputOnPin(Port,Pin)//翻转GPIO引脚电平
  • 配置驱动强度

只有P2.0、P2.1、P2.2、P2.3引脚可以配置为高驱动程度

This I/O can be configured for high drive operation with up to 20-mA drive capability.

此I/O可配置为高达20 mA驱动能力的高驱动操作。

GPIO_setDriveStrengthHigh(Port,Pin)//强驱动
GPIO_setDriveStrengthLow(Port,Pin)//弱驱动(无特殊要求,一般不用设置)
//几乎不用,需要使用时自行查看参数、返回值等详细信息
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

int main(void)
{
    // 初始化 MSP432P401R 微控制器
    MAP_WDT_A_holdTimer();

    // 配置 P1.0 引脚为输出模式
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);

    // 设置 P1.0 引脚的驱动强度为高级别
    MAP_GPIO_setDriveStrengthHigh(GPIO_PORT_P1, GPIO_PIN0);

    while (1)
    {
        // 在 P1.0 引脚输出高电平
        MAP_GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0);

        // 延时约一秒钟
        MAP_PCM_gotoLPM0();
    }
}

(二)点亮LED灯

1.硬件连接

可以打开评估版手册(MSP432开发板手册/slau597f)37页原理图

在这里插入图片描述

共阴极连接,高电平亮,低电平熄灭

2.代码

led.h

#ifndef __LED_H
#define __LED_H
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

// 位带操作
#define LED_RED BITBAND_PERI(P1OUT,0)
#define LED_R BITBAND_PERI(P2OUT,0)
#define LED_G BITBAND_PERI(P2OUT,1)
#define LED_B BITBAND_PERI(P2OUT,2)

void LED_Init(void);//LED初始化函数

void LED_RED_On(void);//打开LED1
void LED_RED_Off(void);//关闭LED1
void LED_RED_Tog(void);//翻转LED1

void LED_Y_On(void);//打开黄色RGB灯
void LED_C_On(void);//打开青色RGB灯
void LED_P_On(void);//打开品红RGB灯

void LED_R_On(void);//红色RGB灯
void LED_G_On(void);//绿色RGB灯
void LED_B_On(void);//蓝色RGB灯

void LED_R_Off(void);
void LED_G_Off(void);
void LED_B_Off(void);

void LED_R_Tog(void);
void LED_G_Tog(void);
void LED_B_Tog(void);

void LED_W_On(void);//白色RGB灯
void LED_W_Off(void);
void LED_W_Tog(void);

#endif

led.c

#include "led.h"

void LED_Init(void)
{
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);//设置GPIO为输出模式
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0 + GPIO_PIN1 + GPIO_PIN2);

    LED_RED_Off();
    LED_R_Off();
    LED_G_Off();
    LED_B_Off();
}
void LED_RED_On(void) { LED_RED = 1; }
void LED_RED_Off(void) { LED_RED = 0; }
void LED_RED_Tog(void) { LED_RED ^= 1; }

void LED_R_Off(void) { LED_R = 0;}
void LED_G_Off(void) { LED_G = 0;}
void LED_B_Off(void) { LED_B = 0; }

void LED_R_On(void) { LED_R = 1; }
void LED_G_On(void) { LED_G = 1;  }
void LED_B_On(void) { LED_B = 1;  }

void LED_R_Tog(void) { LED_R ^= 1; }
void LED_G_Tog(void) { LED_G ^= 1; }
void LED_B_Tog(void) { LED_B ^= 1; }

//白色 White
void LED_W_On(void)
{
    LED_R_On();
    LED_G_On();
    LED_B_On();
}
//白色 White
void LED_W_Off(void)
{
    LED_R_Off();
    LED_G_Off();
    LED_B_Off();
}
//白色 White
void LED_W_Tog(void)
{
    LED_R_Tog();
    LED_G_Tog();
    LED_B_Tog();
}
//黄色 Yellow
void LED_Y_On(void)
{
    LED_R_On();
    LED_G_On();
    LED_B_Off();
}
//品红 Pinkish red
void LED_P_On(void)
{
    LED_R_On();
    LED_G_Off();
    LED_B_On();
}
//青色 Cyan
void LED_C_On(void)
{
    LED_R_Off();
    LED_G_On();
    LED_B_On();
}

main.c

#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>

#include "led.h"

int main(void)
{
    uint32_t i;

    /* Stop Watchdog  */
    MAP_WDT_A_holdTimer();//关闭看门狗

    LED_Init();//LED初始化
    
    while (1)
    {
        LED_RED_On();
        for (i = 0; i < 500000; i++);
        LED_RED_Off();

        LED_R_On();
        for (i = 0; i < 500000; i++);
        LED_R_Off();

        LED_G_On();
        for (i = 0; i < 500000; i++);
        LED_G_Off();

        LED_B_On();
        for (i = 0; i < 500000; i++);
        LED_B_Off();
		
		LED_C_On();
        for (i = 0; i < 500000; i++);
		
		LED_P_On();
        for (i = 0; i < 500000; i++);
		
		LED_Y_On();
        for (i = 0; i < 500000; i++);
		
		LED_W_On();
        for (i = 0; i < 500000; i++);
        LED_W_Off();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
MSP432GPIO库提供了一系列函数用于配置和操作MSP432微控制器的GPIO引脚。下面是一些常用的MSP432GPIO函数: 1. `GPIO_setAsInputPin(selectedPort, selectedPins)`:将指定的GPIO引脚配置为输入模式。 2. `GPIO_setAsOutputPin(selectedPort, selectedPins)`:将指定的GPIO引脚配置为输出模式。 3. `GPIO_setAsPeripheralModuleFunctionInputPin(selectedPort, selectedPins, selectedModule)`:将指定的GPIO引脚配置为特定外设模块的输入引脚。 4. `GPIO_setAsPeripheralModuleFunctionOutputPin(selectedPort, selectedPins, selectedModule)`:将指定的GPIO引脚配置为特定外设模块的输出引脚。 5. `GPIO_setOutputHighOnPin(selectedPort, selectedPins)`:将指定的GPIO引脚输出高电平。 6. `GPIO_setOutputLowOnPin(selectedPort, selectedPins)`:将指定的GPIO引脚输出低电平。 7. `GPIO_toggleOutputOnPin(selectedPort, selectedPins)`:反转指定的GPIO引脚输出电平。 8. `GPIO_getInputPinValue(selectedPort, selectedPins)`:获取指定的GPIO引脚输入电平。 这些函数中,`selectedPort`表示选择的GPIO端口号,`selectedPins`表示选择的引脚号,可以通过逻辑或运算符(`|`)选择多个引脚。`selectedModule`表示选择的外设模块号。 以下是一个使用MSP432GPIO函数的示例: ```c #include <ti/devices/msp432p4xx/driverlib/driverlib.h> int main(void) { // 初始化MSP432启动代码 // 配置P1.0引脚为输出模式 GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0); // 设置P1.0引脚输出高电平 GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0); // 延时一段时间 // 设置P1.0引脚输出低电平 GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0); // 其他代码 return 0; } ``` 在上述示例中,我们将P1.0引脚配置为输出模式,并在延时后将其输出高电平和低电平。你可以根据需要使用不同的函数来配置和操作GPIO引脚。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运从未公平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值