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();
}
}