这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 【玩转TIMSPM0】课程1任务1:学习以及作业完成情况

共2条 1/1 1 跳转至

【玩转TIMSPM0】课程1任务1:学习以及作业完成情况

高工
2024-04-30 23:06:52     打赏

本次主要是以学习的态度来参加本次TI的活动,感谢EEPW提供的这次机会。本次准备跟随着老师的脚步一步一步学习。

本次使用的开发板是TI的MSPM0L1306开发板,是一个出来相对比较新的器件demo板。

第一部分:

接下来进入课程1的第一部分:准备工作。课程提供了获取开发板资料的主途径,在TI的官网可以获取这个开发板全部详细资料,由于第一次接触,所以使用的是TI的开发环境CCS,自己的支持肯定是最好的,还有就是开发板专用的SDK(后来知道,CCS中也可以直接下载)。

其实第一部分主要的介绍的点亮LED,实际上也是咱们开发过程中验证程序下载的第一步——点灯。还特意介绍了一下硬件原理:

1.png

实际上在使用的时候就是通过控制高低电平实现的点灯,不过使用上拉还是下拉的控制方式是相反的。

以下是学习使用的引脚,对应的IO为PA0,对应低电平点亮:

2.png

那么我们如是使用软件实现呢?太方便了,直接使用配置文件继续宁初始化:

3.png

可以在开头的配置相关的头文件中可以看到自动生成的宏定义:

/* Port definition for Pin Group GPIO_LED1 */
#define GPIO_LED1_PORT                                                   (GPIOA)

/* Defines for PIN_0: GPIOA.0 with pinCMx 1 on package pin 1 */
#define GPIO_LED1_PIN_0_PIN                                      (DL_GPIO_PIN_0)
#define GPIO_LED1_PIN_0_IOMUX                                     (IOMUX_PINCM1)

而且相关引脚的初始化已经完成。

我们直接在while中加入闪烁代码:

delay_cycles(32000000);
DL_GPIO_togglePins(GPIO_LED1_PORT, GPIO_LED1_PIN_0_PIN);

效果如下:

4.gif

第二部分

这一部分主要是GPIO的输出(按键输入),按键的检测方式有多种,例如延时法,中断触发法,定时器查询。本次课程使用的按键为S2,板载原理如下图:

5.png

由于该按键没有上拉电阻,所以我们在配置的时候需要上拉一下,对应引脚为PA14。

软件如何实现呢?还是使用配置文件:

6.png

主代码如下:

if(DL_GPIO_readPins(GPIO_S2_PORT, GPIO_S2_PIN_14_PIN) == 0){
    DL_GPIO_clearPins(GPIO_LED1_PORT, GPIO_LED1_PIN_0_PIN);
}
else{
    DL_GPIO_setPins(GPIO_LED1_PORT, GPIO_LED1_PIN_0_PIN);
}

效果如下:

7.gif

第三部分

这一部分主要讲的是PWM的,其实没有讲定时器直接来到PWM感觉有点快,不过TI的配置里面PWM与基本定时器是分开,也就能够理解了。

PWM的原理如下:

8.png

本部分主要通过LED的明暗变化来观察PWM的变化,我们看一下配置:

9.png

10.png

注意哦,和第一部分的引脚是同一个,配置相同会报错,删除就好了,添加控制代码:

delay_cycles(100000);

Dutytmp +=5;
if(Dutytmp > 5000)
    Dutytmp = 0;
DL_TimerG_setCaptureCompareValue(PWM_LED_INST, Dutytmp, DL_TIMER_CC_0_INDEX);

效果如下:

11.gif

课后作业

点亮RGB,实现红色、绿色、蓝色的循环显示,我们看一下硬件:

12.png

对应的绿灯PA13,红灯PA26,蓝灯PA27,板载资源就是好,不用连线。循环点亮的思路就是红灯亮(其他灭)——绿灯亮(其他灭)——蓝灯亮(其他灭),其实这只用到了GPIO的输出知识就可以了,我们添加配置:

13.png

while中添加循环点亮的代码:

DL_GPIO_clearPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Red_PIN);
    DL_GPIO_clearPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Green_PIN);
    DL_GPIO_clearPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Blue_PIN);
    
    
    while (1) {
        delay_cycles(32000000);
        DL_GPIO_clearPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Blue_PIN);
        DL_GPIO_setPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Red_PIN);
        delay_cycles(32000000);
        DL_GPIO_clearPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Red_PIN);
        DL_GPIO_setPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Green_PIN);
        delay_cycles(32000000);
        DL_GPIO_clearPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Green_PIN);
        DL_GPIO_setPins(GPIO_RGB_PORT, GPIO_RGB_PIN_Blue_PIN);
    }

由于我们知道具体的顺序,在初始的时候把所有灯先关闭,之后一个打开,之后关闭之前的状态,再打开后一个状态就可以循环了,间隔选择的1s。

效果如下:

14.gif




关键词: 玩转TI     MSPM0    

专家
2024-05-02 08:34:34     打赏
2楼

来学习一下


共2条 1/1 1 跳转至

回复

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