MSPM0G3507之LED点灯

1、相关配置

        主控:MSPM0G3507SPTR(48角)

        编译器:Keil,版本:5.33

2、板子以及原理图

        通过原理图我们可以发现,为了点亮RGB三色灯(红绿蓝),需要配置B2、B3、A7这三个引脚。 原理图中使用的RGB灯为共阳接法,IO口需要为低电平才能使得LED发光。所以在后续的代码中,低电平灯亮,高电平灯灭

2、Sysconfig配置

         通过Sysconfig配置GPIO后,我们就将三个引脚配置好了。需要注意的是,记得将生成的ti_msp_dl_config.c和ti_msp_dl_config.h保存在工程路径下。参考链接:

Sysconfig文件保存icon-default.png?t=N7T8https://blog.csdn.net/m0_72300717/article/details/139812199?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171880078416800186561320%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171880078416800186561320&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-139812199-null-null.nonecase&utm_term=MSPM0G3507%E4%B9%8BSYSCONFIG&spm=1018.2226.3001.4450

3、GPIO函数设计 

3.1 IO口控制函数

DL_GPIO_clearPins(PORTB_PORT, PORTB_LED_RED_PIN);   // 红色LED亮
DL_GPIO_setPins(PORTB_PORT, PORTB_LED_RED_PIN);     // 红色LED灭
DL_GPIO_togglePins(PORTB_PORT, PORTB_LED_RED_PIN);  // 红色LED翻转

         为了控制GPIO的高低电平,我们首先需要了解一些函数,其中“clear”可以理解为清零;“set”理解为置一;“toggle”就是翻转,例如原本IO口为高电平,使用一次这个函数后,IO口就翻转为低电平。

3.2 宏定义

/*----------------------------------宏定义-----------------------------------------*/
#define LED_RED_ON       DL_GPIO_clearPins(PORTB_PORT, PORTB_LED_RED_PIN)   // 红色LED亮
#define LED_RED_OFF      DL_GPIO_setPins(PORTB_PORT, PORTB_LED_RED_PIN)     // 红色LED灭
#define LED_RED_TOGGLE   DL_GPIO_togglePins(PORTB_PORT, PORTB_LED_RED_PIN)  // 红色LED翻转

#define LED_GREEN_ON     DL_GPIO_clearPins(PORTA_PORT, PORTA_LED_GREEN_PIN)  // 绿色LED亮
#define LED_GREEN_OFF    DL_GPIO_setPins(PORTA_PORT, PORTA_LED_GREEN_PIN)    // 绿色LED灭
#define LED_GREEN_TOGGLE DL_GPIO_togglePins(PORTA_PORT, PORTA_LED_GREEN_PIN) // 绿色LED翻转

#define LED_BLUE_ON      DL_GPIO_clearPins(PORTB_PORT, PORTB_LED_BLUE_PIN)  // 蓝色LED亮
#define LED_BLUE_OFF     DL_GPIO_setPins(PORTB_PORT, PORTB_LED_BLUE_PIN)    // 蓝色LED灭
#define LED_BLUE_TOGGLE  DL_GPIO_togglePins(PORTB_PORT, PORTB_LED_BLUE_PIN) // 蓝色LED翻转

        巧妙利用宏定义,我们就可以简化这些很长的函数,在实际看代码的过程中,也更加通俗易懂。

3.3 点灯测试

/**
 * @函数介绍: 延时函数
 * @输入参数: 无
 * @输出参数: 无
 * @说明: 随意设置的,想要精准定时请用定时器
 */
void my_delay(void)
{
	int i, j = 0;
    // 修改 i 和 j 可以调整延时时间
	for(i = 800; i > 0; i--)
	{
		for(j = 1000; j > 0; j--)
		{
			
		}
	}
}

/**
 * @函数介绍:三色灯切换
 * @输入参数: 无
 * @输出参数: 无
 * @说明: 无
 */
void RGB_LED_Switch(void)
{
    LED_RED_ON;
    LED_GREEN_OFF;
    LED_BLUE_OFF;
    my_delay();
    LED_RED_OFF;
    LED_GREEN_ON;
    LED_BLUE_OFF;
    my_delay();
    LED_RED_OFF;
    LED_GREEN_OFF;
    LED_BLUE_ON;
    my_delay();
}

        通过观察RGB_LED_Swtich函数,我们很容易理解这是一个红绿蓝三色灯切换的代码,利用宏定义后,代码的可读性会大大提高。

3.4 主函数

#include "ti_msp_dl_config.h"
#include "config.h"

/**
 * @函数介绍: main函数 
 * @说明: 无
 */
int main(void)
{
	SYSCFG_DL_init(); // 芯片资源初始化,由SysConfig配置软件自动生成
	while(1)
	{
		RGB_LED_Switch(); // 三色灯切换
	}
}

         主函数中我们只需要对Sysconfig生成的SYSCFG_DL_init()函数初始化(这一步是固定的)。在while(1)中运行RGB函数就行。

4、实验效果

 

        通过实验我们可以发现,RGB三色灯被成功点亮,并按顺序正常切换。

5、总结 

        GPIO控制较为简单,将其配置为输入模式,就可以进行高低电平的判断,即按键检测,大家可以自己尝试。需要重点关注两点:

        1、Sysconfig的配置不要出错

        2、控制IO口的几个函数要清楚

2024-6-19-14:47,平平淡淡的一天

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值