CC2640R2F学习笔记(17)——GPIO使用

一、硬件连接

按键名称 引脚 控制方法
蜂鸣器 DIO_13 高电平响、低电平停
LED灯1 DIO_0 高电平亮、低电平灭
LED灯2 DIO_1 高电平亮、低电平灭

按键控制查看CC2640R2F学习笔记(3)——按键使用

二、移植文件

链接:https://pan.baidu.com/s/1GM3ZYUVE6Jfzz9Nam6YLug 提取码:cubs
board_gpio.cboard_gpio.h 两个文件拖拽至CCS工程的Application文件夹下


添加文件过程中,选项选择如下

2.1 board_gpio.c

/*********************************************************************
 * INCLUDES
 */
#include 
#include 

#include 
#include 
#include 
#include 

#include 
#include 

#include "board_gpio.h"

/*********************************************************************
 * LOCAL VARIABLES
 */
static PIN_State s_beepPins;
static PIN_Handle s_hBeepPins = NULL;

static PIN_State s_ledPins;
static PIN_Handle s_hLedPins = NULL;

// 蜂鸣器IO配置
static PIN_Config s_beepPinsCfg[] =
{
    BOARD_BEEP_IO | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    PIN_TERMINATE
};

// LED灯IO配置
static PIN_Config s_ledPinsCfg[] =
{
    BOARD_LED1_IO | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    BOARD_LED2_IO | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    PIN_TERMINATE
};

/*********************************************************************
 * PUBLIC FUNCTIONS
 */

/**
 @brief 配置蜂鸣器工作模式
 @param beepMode 工作模式
 @return none
*/
void Board_BeepSet(uint8 beepMode)
{
    if(NULL == s_hBeepPins)                                     // 第一次使用时注册IO
    {
        s_hBeepPins = PIN_open(&s_beepPins, s_beepPinsCfg);
    }
    switch(beepMode)                                            // 执行模式
    {
    case BEEP_OFF:                                              // 蜂鸣器不响模式
        PIN_setOutputValue(s_hBeepPins, BOARD_BEEP_IO, 0);
        break;

    case BEEP_ON:                                               // 蜂鸣器响模式
        PIN_setOutputValue(s_hBeepPins, BOARD_BEEP_IO, 1);
        break;

    default:
        break;
    }
}

/**
 @brief 配置LED灯工作模式
 @param ledMode 工作模式
 @return none
*/
void Board_LedSet(uint8 ledMode)
{
    if(NULL == s_hLedPins)                                      // 第一次使用时注册IO
    {
        s_hLedPins = PIN_open(&s_ledPins, s_ledPinsCfg);
    }
    switch(ledMode)                                             // 执行模式
    {
    case LED_OFF:                                               // LED灭模式
        PIN_setOutputValue(s_hLedPins, BOARD_LED1_IO, 0);
        PIN_setOutputValue(s_hLedPins, BOARD_LED2_IO, 0);
        break;

    case LED_ON:                                                // LED亮模式
        PIN_setOutputValue(s_hLedPins, BOARD_LED1_IO, 1);
        PIN_setOutputValue(s_hLedPins, BOARD_LED2_IO, 1);
        break;

    default:
        break;
    }
}

/*************************************END OF FILE*************************************/

2.2 board_gpio.h

#ifndef _BOARD_GPIO_H_
#define _BOARD_GPIO_H_

/*********************************************************************
 * INCLUDES
 */
#include "_hal_types.h"

/*********************************************************************
 * DEFINITIONS
 */
#define BOARD_BEEP_IO           PIN_ID(13)
#define BOARD_LED1_IO           PIN_ID(0)
#define BOARD_LED2_IO           PIN_ID(1)

#define BEEP_OFF                0x00
#define BEEP_ON                 0x01
#define LED_OFF                 0x00
#define LED_ON                  0x01

/*********************************************************************
 * API FUNCTIONS
 */
void Board_BeepSet(uint8 beepMode);
void Board_LedSet(uint8 ledMode);

#endif /* _BOARD_GPIO_H_ */

三、API调用

需包含头文件 board_gpio.h

Board_BeepSet

功能 配置蜂鸣器工作模式
函数定义 void Board_BeepSet(uint8 beepMode)
参数 beepMode 工作模式(BEEP_ON或BEEP_OFF)
返回

Board_LedSet

功能 配置LED灯工作模式
函数定义 void Board_LedSet(uint8 ledMode)
参数 beepMode 工作模式(LED_ON或LED_OFF)
返回

• 由 Leung 写于 2019 年 4 月 13 日

• 参考:【CC2640R2F】香瓜CC2640R2F之LED

你可能感兴趣的:(CC2640R2F学习笔记(17)——GPIO使用)