这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 【玩转TIMSPM0】课程1-GPIO和PWM的学习

共3条 1/1 1 跳转至

【玩转TIMSPM0】课程1-GPIO和PWM的学习

工程师
2024-05-04 18:44:12     打赏

首先感谢EEPW提供这次TI活动学习的机会。

本课程学习的主要目的是了解MSPM0L1306的GPIO和PWM的控制。

一、GPIO和PWM硬件。

1、按键输入:开发板提供两个按键S1和S2。

S1按键:PA18默认外部下拉,检测高电平有效,配置IO时需要内部下拉或悬空

S2按键:PA14悬空无外部上下拉电阻,检测低电平有效,配置IO时需要内部上拉。

本次学习使用PA14按键。

image.png

2、LED指示灯:开发板提供2颗LED灯,一颗单红色LED1,一颗三色LED2。

LED1:LED阳极接电源,阴极接IO,为灌电流驱动方式,设置IO-PA0为输出0时点亮LED灯。

LED2:LED阴极接地,阳极接IO,为拉电流驱动方式,设置IO-PA26/PA13/PA27为输出1时点亮LED灯。

本次学习使用PA26/PA13/PA27,对应LED颜色为红绿蓝。设置红绿蓝灯循环点亮。

image.png

3、PWM:本次未使用杜邦线,选择使用PA0口为PWM输出,点亮LED1。

从规格书可以得知:PA0作为PWM使用时,需要配置为TIMG1_C0,即配置为TIMG1的通道0。

image.png

二、软件配置

TI提供多种IDE工具,本次学习使用TI原厂的IDE-CCS12.7.0.00007_win64,在TI官网即可下载。

image.png

另外还需要下载SDK和Sysconfig工具,本次学习资料包中有提供。

image.png

mspm0_sdk_2_00_00_03中包含MSPM0L1306的SDK开发板,有很多例程可直接用IDE导入。

sysconfig-1.20.0_3587-setup为Sysconfig硬件引脚配置工具,安装完后可以不管,在IDE工具中可直接调用。

三、代码实现

1、第一次打开IDE工具,是空白的,没有工程项目。若加载过工程项目,打开之后会自动加载默认路径下没有移除的工程。本次为了快捷开发,直接调用了SDK中的空例程。

在IDE工具 Project 中选择导入工程项目:Project -> Import CCS Projects...

image.png

image.png

2、由于导入的是空白工程,需要手动加入自己需要的硬件配置。

首先添加按键IO:

image.png

其次添加LED灯IO:

image.png

最后添加PWM:

image.png

image.png

3、配置完sysconfig之后,先保存,并编译一次。确保工程中的sysconfig得到更新。

ti_msp_dl_config.c和ti_msp_dl_config.h:配置完sysconfig后,编译更新。里面包含了系统和sysconfig中硬件配置的初始化,GPIO,PWM等函数。

empty.c:主函数main()。用户编写代码区域,实现用户功能。

image.png

4、配置烧录调试器。

image.png

四、完整代码。

#include "ti_msp_dl_config.h"


#define LEDR_ON     DL_GPIO_setPins(USER_LEDS_PORT, USER_LEDS_LEDR_PIN)

#define LEDR_OFF    DL_GPIO_clearPins(USER_LEDS_PORT, USER_LEDS_LEDR_PIN)

#define LEDG_ON     DL_GPIO_setPins(USER_LEDS_PORT, USER_LEDS_LEDG_PIN)

#define LEDG_OFF    DL_GPIO_clearPins(USER_LEDS_PORT, USER_LEDS_LEDG_PIN)

#define LEDB_ON     DL_GPIO_setPins(USER_LEDS_PORT, USER_LEDS_LEDB_PIN)

#define LEDB_OFF    DL_GPIO_clearPins(USER_LEDS_PORT, USER_LEDS_LEDB_PIN)

#define Key2Tmp     DL_GPIO_readPins(USER_KEYS_PORT, USER_KEYS_KEY2_PIN)


int main(void)

{

    uint32_t DutyTmp = 0;


    SYSCFG_DL_init();


    while (1)

    {

        if (Key2Tmp == 0)

        {

            LEDR_OFF;LEDG_OFF;LEDB_OFF;

            delay_cycles(100000);

            DutyTmp += 5;

            if(DutyTmp > 5000)  DutyTmp = 0;

            DL_TimerG_setCaptureCompareValue(PWM0_INST, DutyTmp, DL_TIMER_CC_0_INDEX);

        }else

        {

            DutyTmp = 0;

            DL_TimerG_setCaptureCompareValue(PWM0_INST, 0, DL_TIMER_CC_0_INDEX);

            LEDR_ON;LEDG_OFF;LEDB_OFF;

            delay_cycles(16000000);

            LEDR_OFF;LEDG_ON;LEDB_OFF;

            delay_cycles(16000000);

            LEDR_OFF;LEDG_OFF;LEDB_ON;

            delay_cycles(16000000);

        }

    }

}

完结、共进!





关键词: 玩转     TIMSPM0     学习    

专家
2024-05-05 08:57:49     打赏
2楼

看看!学习学习


专家
2024-05-05 10:24:13     打赏
3楼

现在市场ST最大咯


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]