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

发布时间:2022-12-20  

  这是最基本的单片机运用,点亮第一个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"


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

相关文章

    芯片、晶振、USB接口、ESP8266无线模块、IO扩展板、LED显示屏等部分。 它被广泛应用于各种嵌入式系统和智能控制器的设计和开发中,如自动化控制、家庭自动化、机器人、无人驾驶等。由于......
    的编程实际上很简单: 1、设置GPIO口的引脚为输入或者输出模式。我们在进行点灯代码的时候,一般设置为推挽输出模式。 2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件......
    6、ModelSim仿真波形 7、上板验证 程序下载完毕后,会看到板卡LED0不断闪烁,时间间隔为1秒。 三、使用I.MX6ULL IO点亮LED 嵌入式linux学习......
    。 三、使用I.MX6ULL IO点亮LED 嵌入式linux学习者大体可以分为两类,一类是进阶用户,主要指已经有大量mcu工作经验的开发者, 他们希望进阶到更有难度,薪资更高的mpu开发中去。另一......
    stm32-GPIO 模式配置如何?;作为嵌入式系统的一种重要硬件平台,STM32 微控制器在许多应用场合都有广泛的应用。GPIO(General Purpose Input Output)即通......
    stm32按键控制led灯亮灭;在嵌入式系统中,硬件按键常常被用作开关输入,控制LED灯亮灭。在STM32系列单片机中,有多种方式实现按键控制LED灯亮灭,我们将介绍其中一种较为简单的方法。一......
    如何快速成为点灯大师?;学习嵌入式,最经典的第一个实验就是点亮一颗 LED 灯。别小看这个实验,从我辅导的学员来看,不少初学者连这么简单的案例都做不出来。 想要成这一名优秀的点灯大师,第一......
    片机的程序中,可以使用GPIO输出控制来控制LED指示灯。例如,下面的代码片段可以使用LED指示灯输出一个错误码: ```c #include #define LED_PIN GPIO_Pin_13......
    沿触发或双边沿触发。 由于每个外部中断引脚包含一个数字滤波器,中断控制可以确认请求信号是否长于 3 个时钟。 11.2 GPIO 控制 LED  11.2.1 原理图       从原理图上可以看出,三个灯的控制......
    中(如图5-9-2所示)。 06 检测 至此,两类输入/输出代码完成,可以根据不同用途添加代码,在这里我用到了一个LED检测了一下。6.1 手机上打开机智云App,控制舵机转动和LED亮灭。如下图所示。 ......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>