1489|0

6450

帖子

10

TA的资源

版主

楼主
 

【MSPM0L1306 LaunchPad™ 开发套件】3、创建新程序并使用IO口控制LED [复制链接]

  本帖最后由 秦天qintian0303 于 2023-10-21 20:30 编辑

        这次我们将使用CCS开发环境创建一个新的工程,用于本次活动的测试进行。TI不推荐这种方式使用新建,有很多依存关系需要重新理解和梳理,所以我们使用MSPM0 SDK中的empty工程作为我们本次测试活动的基础工程。

        打开一个新的程序工程:

        加载完成之后会对应在之前设定的工程路径下形成一个新的工程,直接通过重命名进行工程的改名和C文件的改名:

        针对板卡的LED使用情况进行LED的控制,板载LED资源如下图:

        一共有两个LED可控,通过4个IO口控制;

        咱们回到工程里边去,为了LED控制创建了eva_LED的C和H文件,将这个文件所在文件夹加入到includes中去。

        CCS加入新头文件路径方法如下(使用Alt+Enter进入):

        添加头文件路径对应的是1里面的内容,添加新的是2位置的小图标,然后选择对应的文件夹就可以吧路径添加进去了;

        首先进行的是对应的LED1操作(IO口是PA0),初始化代码如下:

void LED1_GPIO_init(void)
{
	DL_GPIO_initDigitalOutput(IOMUX_PINCM1);//配置引脚为输出模式,GPIOA_0对应的是IOMUX_PINCM1
	DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_0);
	DL_GPIO_enableOutput(GPIOA, DL_GPIO_PIN_0);//使能输出
}

        这里需要注意,对于GPIO的操作IOMUX_PINCM与PIN的数值差一,例如IOMUX_PINCM1对应的是IOMUX_PINCM1_PF_GPIOA_DIO00;

        对于IO口的使用粗略延时的方法进行操作:

        代码:

#define LED1_toggle DL_GPIO_togglePins(GPIOA, DL_GPIO_PIN_0)

void LED_Alter(void)
{
	delay_cycles(32000000);//延时一秒
	LED1_toggle;
}

        效果如下:

LED1控制

        这回咱们对上边的两个LED进行操作,全部使用GPIO控制循环点亮:

        代码如下:

#define LED1_RESET              DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_0)
#define LED1_SET                DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_0)
#define LED1_toggle             DL_GPIO_togglePins(GPIOA, DL_GPIO_PIN_0)

#define LED2_Green_RESET        DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_13)
#define LED2_Green_SET          DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_13)
#define LED2_Green_toggle       DL_GPIO_togglePins(GPIOA, DL_GPIO_PIN_13)

#define LED2_Red_RESET          DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_26)
#define LED2_Red_SET            DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_26)
#define LED2_Red_toggle         DL_GPIO_togglePins(GPIOA, DL_GPIO_PIN_26)

#define LED2_Blue_RESET         DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_27)
#define LED2_Blue_SET           DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_27)
#define LED2_Blue_toggle        DL_GPIO_togglePins(GPIOA, DL_GPIO_PIN_27)

uint8_t state; //LED过程

//初始化
void LED1_GPIO_init(void)
{
    DL_GPIO_initDigitalOutput(IOMUX_PINCM1);//配置引脚为输出模式,GPIOA_0对应的是IOMUX_PINCM1
    DL_GPIO_initDigitalOutput(IOMUX_PINCM14);//配置引脚为输出模式,GPIOA_0对应的是IOMUX_PINCM1
    DL_GPIO_initDigitalOutput(IOMUX_PINCM27);//配置引脚为输出模式,GPIOA_0对应的是IOMUX_PINCM1
    DL_GPIO_initDigitalOutput(IOMUX_PINCM28);//配置引脚为输出模式,GPIOA_0对应的是IOMUX_PINCM1
    DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_0|DL_GPIO_PIN_13|DL_GPIO_PIN_26|DL_GPIO_PIN_27);
    DL_GPIO_enableOutput(GPIOA, DL_GPIO_PIN_0|DL_GPIO_PIN_13|DL_GPIO_PIN_26|DL_GPIO_PIN_27);//使能输出

}

void LED_Alter(void)
{
    delay_cycles(32000000);
    state++;
    state %= 4;

    LED1_RESET;
    LED2_Green_RESET;
    LED2_Red_RESET;
    LED2_Blue_RESET;

    switch(state)
    {
        case 0:
            LED1_SET;
            break;

        case 1:
            LED2_Green_SET;
            break;

        case 2:
            LED2_Red_SET;
            break;

        case 3:
            LED2_Blue_SET;
            break;

        default:
            break;
    }
}

        效果如下:

LED循环点亮

        本章节通过LED的操作对GPIO进行了初步的了解和试验,对于主要的差异就是对IO口的模式的选择,PIN与IOMUX_PIN不是完全根据习惯对应的,这块不知道是出于什么考虑的,不过通过向下查看底层代码还是很好区分的,通过延时实现所有LED循环点亮成功。

此帖出自MSPM0 MCU论坛
点赞 关注
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表