NO.7 MSP432使用GPIO驱动开发板Led

发布时间:
来源: 电子工程世界

  这是最基本的单片机运用,点亮第一个LED。


  由于存在TIDriver的帮助和SysConfigs的一键配置,我们的开发非常简单。


  首先,我们要了解什么是GPIO。GPIO全称General-purpose input/output,指的是通用输入输出端口。指的是我们单片机上既能作为输出(输出电压),又能作为输入(检测电压)的端口称为GPIO。GPIO具有很多种用途,比如点亮LED,检测按键输入,甚至可以软件模拟通信协议(通过在不同时刻下,置不同端口的高低电平作为信号进行数据传输)。所以,了解通用的GPIO口对于我们单片机使用是非常重要的。


  这里我不会具体介绍GPIO的常用模式,我会直接讲解GPIO在MSP432是如何应用的。


  首先,我们在ResourceExplorer中找到SimpleLink MSP432P4 SDK下,Example中TI Drivers的gpiointerrupt这个工程,并将其导入到我们的CCS中。

  

  其次,我们浏览下该工程文件下的结构:

  

  我们点击进入gpiointerrupt.syscfg这个文件进入图形化配置我们基本的GPIO口。

  

  我们在gpiointerrupt.syscfg中可以看到非常丰富的外设可以配置。进入GPIO选项,我们可以一键添加具体GPIO工作模式,具体工作模式我就不具体介绍了,相关GPIO工作模式大家自行百度,在这系列的博文中,我们都假设大家具有一定的硬件基础,我们在文章中只是讲如何应用。


  在gpiointerrupt.c中,存放着我们的主程序:


/*

 *  ======== gpiointerrupt.c ========

 */

#include

#include


/* Driver Header files */

#include


/* Driver configuration */

#include "ti_drivers_config.h"


/*

 *  ======== gpioButtonFxn0 ========

 *  Callback function for the GPIO interrupt on CONFIG_GPIO_BUTTON_0.

 */

void gpioButtonFxn0(uint_least8_t index)

{

    /* Clear the GPIO interrupt and toggle an LED */

    GPIO_toggle(CONFIG_GPIO_LED_0);

}


/*

 *  ======== gpioButtonFxn1 ========

 *  Callback function for the GPIO interrupt on CONFIG_GPIO_BUTTON_1.

 *  This may not be used for all boards.

 */

void gpioButtonFxn1(uint_least8_t index)

{

    /* Clear the GPIO interrupt and toggle an LED */

    GPIO_toggle(CONFIG_GPIO_LED_1);

}


/*

 *  ======== mainThread ========

 */

void *mainThread(void *arg0)

{

    /* Call driver init functions */

    GPIO_init();


    /* Configure the LED and button pins */

    GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

    GPIO_setConfig(CONFIG_GPIO_LED_1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

    GPIO_setConfig(CONFIG_GPIO_BUTTON_0, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);


    /* Turn on user LED */

    GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_ON);


    /* install Button callback */

    GPIO_setCallback(CONFIG_GPIO_BUTTON_0, gpioButtonFxn0);


    /* Enable interrupts */

    GPIO_enableInt(CONFIG_GPIO_BUTTON_0);


    /*

     *  If more than one input pin is available for your device, interrupts

     *  will be enabled on CONFIG_GPIO_BUTTON1.

     */

    if (CONFIG_GPIO_BUTTON_0 != CONFIG_GPIO_BUTTON_1) {

        /* Configure BUTTON1 pin */

        GPIO_setConfig(CONFIG_GPIO_BUTTON_1, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);


        /* Install Button callback */

        GPIO_setCallback(CONFIG_GPIO_BUTTON_1, gpioButtonFxn1);

        GPIO_enableInt(CONFIG_GPIO_BUTTON_1);

    }


    return (NULL);

}


  其中,在GPIO配置中,最主要的是要引入GPIO的头文件


#include

  在使用GPIO口之前,我们要先初始化GPIO


GPIO_init(); //Call driver init functions

  如果说我们要使得某一个LED亮,我们要这样做


/* Turn on user LED */

GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_ON);

  其中CONFIG_GPIO_LED_0是我们在gpiointerrupt.syscfg配置的GPIO的名称,CONFIG_GPIO_LED_ON可以用0或者1替代,这里我们实现定义了CONFIG_GPIO_LED_ON的值为1方便阅读。


  然后,就没有了。大家可以看到,点亮一个LED就是如此简单。


  至于该c文件下其他功能,是作为按键中断的。我们下次会讲。


  最后提醒下大家,我们在gpiointerrupt.syscfg中配置的GPIO等数据,可以在ti_drivers_config.h中查看。每当我们图形化配置好功能后,再编译一次,CCS就会自动更新。十分方便。


/* Driver configuration */

#include "ti_drivers_config.h"


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。