这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 【TIMSPM0MCU焕新大作战】+课程1任务1:点亮RGB,实现红色、绿色、蓝

共6条 1/1 1 跳转至

【TIMSPM0MCU焕新大作战】+课程1任务1:点亮RGB,实现红色、绿色、蓝色的循环显示

专家
2024-04-13 19:51:36     打赏

本帖为TI MSPM0 MCU 焕新大作战活动中的课程1任务1的完成贴。

根据用户收手册,开发板上和LED有关的电路为:

图片1.png

通过短跳线,LED分别连接到PA13,PA26,PA27三个GPIO口。将三个GPIO口生命为输出模式驱动LED,使用DL_GPIO_initDigitalOutput函数,它的声明方式为:

__STATIC_INLINE void DL_GPIO_initDigitalOutput(uint32_t pincmIndex);

是通过控制对应的寄存器位,控制GPIO口输入口还是输出口,代码很好理解,和Arduino中对输入输出的设置方式很像,应该不难理解。


在例程“gpio_toggle_output_LP_MSPM0L1306_nortos_ticlang”,这三个LED刚好是被程序用到了的,所以,课程1就在这个例程上进行改造。很简单。

依旧使用TI的CCS IDE作为开发工具,导入例程。

图片2.png在文件“ti_msp_dl_config.h”中有如下定义:

/* Defines for USER_LED_1: GPIOA.27 with pinCMx 28 on package pin 31 */
#define GPIO_LEDS_USER_LED_1_PIN                                (DL_GPIO_PIN_27)
#define GPIO_LEDS_USER_LED_1_IOMUX                               (IOMUX_PINCM28)
/* Defines for USER_LED_2: GPIOA.26 with pinCMx 27 on package pin 30 */
#define GPIO_LEDS_USER_LED_2_PIN                                (DL_GPIO_PIN_26)
#define GPIO_LEDS_USER_LED_2_IOMUX                               (IOMUX_PINCM27)
/* Defines for USER_LED_3: GPIOA.13 with pinCMx 14 on package pin 17 */
#define GPIO_LEDS_USER_LED_3_PIN                                (DL_GPIO_PIN_13)
#define GPIO_LEDS_USER_LED_3_IOMUX                               (IOMUX_PINCM14)
/* Defines for USER_TEST: GPIOA.1 with pinCMx 2 on package pin 2 */
#define GPIO_LEDS_USER_TEST_PIN                                  (DL_GPIO_PIN_1)
#define GPIO_LEDS_USER_TEST_IOMUX                                 (IOMUX_PINCM2)

与电路图是一致的。


程序做了简单处理,代码如下:



#include "ti_msp_dl_config.h"
/* This results in approximately 0.5s of delay assuming 32MHz CPU_CLK */
#define DELAY (16000000)
int main(void) {
    /* Power on GPIO, initialize pins as digital outputs */
    SYSCFG_DL_init();
    /* Default: LED1 and LED3 ON, LED2 OFF */
    DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
    DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN |
                                        GPIO_LEDS_USER_LED_3_PIN |
                                        GPIO_LEDS_USER_TEST_PIN);
    DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_LED_3_PIN | GPIO_LEDS_USER_TEST_PIN);
    while (1) {
//        delay_cycles(DELAY);
//        DL_GPIO_togglePins(GPIO_LEDS_PORT,
//            GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_LED_2_PIN |
//                GPIO_LEDS_USER_LED_3_PIN | GPIO_LEDS_USER_TEST_PIN);
        // 点亮红色LED
        delay_cycles(DELAY);
        DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
        DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
        // 灭掉红色,点亮绿色
        delay_cycles(DELAY);
        DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
        DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
        // 灭掉绿色,点亮蓝色
        delay_cycles(DELAY);
        DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
        DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
    }
}

就是间隔一定周期(0.5秒),依次点亮和灭掉红色、绿色、蓝色的LED。

运行效果如下:

课程1.gif






关键词: TI MSPM0 MCU 焕新大作战     课程1    

高工
2024-04-13 21:12:33     打赏
2楼

真迅速  


助工
2024-04-13 21:14:39     打赏
3楼

这么快就拿到开发板呀,恭喜恭喜呀?


高工
2024-04-14 07:57:04     打赏
4楼

LED闪烁功能完成了


专家
2024-04-14 08:31:41     打赏
5楼

是,是挺快的,嘿嘿




专家
2024-04-14 09:07:19     打赏
6楼

感谢楼主分享


共6条 1/1 1 跳转至

回复

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