[CC2640]

CC2640之LED

[复制链接]
471|12
手机看帖
扫描二维码
随时随地手机跟帖
drer|  楼主 | 2019-7-10 10:20 | 显示全部楼层

硬件原理图



由上面的两张图可知:

1、IO口为高电平时,LED亮;IO口为低电平时,LED灭。

2、

LED1——DIO_25

LED2——DIO_27


LED3——DIO_7

LED4——DIO_0

注:SFM16是拨码开关。


使用特权

评论回复
drer|  楼主 | 2019-7-10 10:21 | 显示全部楼层
实验步骤

1、编写并添加自定义的LED驱动

1)写一个LED驱动GUA_Led.c(存放在“……\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\Source\Application\GUA”路径下)

//******************************************************************************        
//name:         GUA_Led.c        
//introduce:    香瓜自定义的LED驱动   
//author:       甜甜的大香瓜      
//email:        897503845@qq.com   
//QQ group      香瓜BLE之CC2640(557278427)
//changetime:   2016.08.16
//******************************************************************************
#include <string.h>
#include <stdio.h>

#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Queue.h>

#include "Board.h"
#include "GUA_Led.h"
/*********************宏定义************************/   
#ifndef U8  
typedef unsigned char U8;  
#endif  

/*********************内部变量************************/  
static PIN_State  ledPins;
static PIN_Handle hledPins = NULL;

//IO配置
PIN_Config ledPinsCfg[] =
{
    Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    Board_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    Board_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    Board_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    PIN_TERMINATE
};

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:21 | 显示全部楼层
//******************************************************************************        
//name:             GUA_Led_Set      
//introduce:        香瓜点灯驱动      
//parameter:        led:HAL_LED_1、HAL_LED_2、HAL_LED_3、HAL_LED_4、HAL_LED_ALL        
//                  mode:HAL_LED_MODE_OFF、HAL_LED_MODE_ON、HAL_LED_MODE_FLASH、HAL_LED_MODE_TOGGLE     
//return:           none     
//author:           甜甜的大香瓜            
//email:            897503845@qq.com
//QQ group          香瓜BLE之CC2640(557278427)              
//changetime:       2016.08.16                 
//******************************************************************************
void GUA_Led_Set(U8 led, U8 mode)
{
  U8 i = 0;
  U8 pin[4] = {Board_LED1, Board_LED2, Board_LED3, Board_LED4};   

  //第一次使用时注册IO
  if(NULL == hledPins)
  {
    hledPins = PIN_open(&ledPins, ledPinsCfg);
  }

  //依次检测4个led是否有执行动作
  for(i = 0; i <= 3; i++)
  {      
    if(led & (1 << i))
    {
      switch(mode)
      {
        case HAL_LED_MODE_OFF:
        {
          PIN_setOutputValue(hledPins, pin, 0);
          break;         
        }

        case HAL_LED_MODE_ON:
        {
          PIN_setOutputValue(hledPins, pin, 1);
          break;         
        }

        case HAL_LED_MODE_FLASH:
        {
          PIN_setOutputValue(hledPins, pin, 1);   
          Task_sleep(10*1000/Clock_tickPeriod);
          PIN_setOutputValue(hledPins, pin, 0);
          break;         
        }        

        case HAL_LED_MODE_TOGGLE:
        {
          PIN_setOutputValue(hledPins, pin, !PIN_getOutputValue( pin));
          break;         
        }      
      }
    }
  }
}

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:21 | 显示全部楼层
2)写一个LED驱动头文件GUA_Led.h(存放在“……\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\Source\Application\GUA”路径下)
//******************************************************************************        
//name:         GUA_Led.h        
//introduce:    香瓜自定义的LED驱动头文件   
//author:       甜甜的大香瓜      
//email:        897503845@qq.com   
//QQ group      香瓜BLE之CC2640(557278427)
//changetime:   2016.08.16
//******************************************************************************
#ifndef _GUA_LED_H_
#define _GUA_LED_H_

/*********************宏定义************************/
//LEDS
#define HAL_LED_1     0x01
#define HAL_LED_2     0x02
#define HAL_LED_3     0x04
#define HAL_LED_4     0x08
#define HAL_LED_ALL   (HAL_LED_1 | HAL_LED_2 | HAL_LED_3 | HAL_LED_4)

//Modes
#define HAL_LED_MODE_OFF     0x00
#define HAL_LED_MODE_ON      0x01
#define HAL_LED_MODE_FLASH   0x02
#define HAL_LED_MODE_TOGGLE  0x04

/*********************函数声明************************/
extern void GUA_Led_Set(unsigned char led, unsigned char mode);

#endif

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:22 | 显示全部楼层
3)工程中添加GUA_Led.c和GUA_Led.h


使用特权

评论回复
drer|  楼主 | 2019-7-10 10:22 | 显示全部楼层
4)在IAR设置中添加按键驱动源文件路径


$PROJ_DIR$/../../../Source/Application/GUA

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:22 | 显示全部楼层
2、修改协议栈LED对应引脚(Board.h中)

/* Leds */
#define Board_LED_ON                        1               /* LEDs on CC2650 are active high */
#define Board_LED_OFF                       0
#define Board_LED1                          IOID_25         /* RF2.11 */
#define Board_LED2                          IOID_27         /* RF2.13 */
#define Board_LED3                          IOID_7          /* RF1.2  */
#define Board_LED4                          IOID_0//IOID_6          /* RF1.4  */
由于开发板使用的LED4为IOID_0,而协议栈默认使用的是IOID_6,因此做如上修改。

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:22 | 显示全部楼层
3、应用层调用(simpleBLEperipheral.c中)

1)添加头文件


//GUA
#include "GUA_Led.h"  
//GUA

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:23 | 显示全部楼层
2)添加测试代码(SimpleBLEPeripheral_init函数中)

  //点灯
  GUA_Led_Set(HAL_LED_1, HAL_LED_MODE_ON);              //LED1 亮
  GUA_Led_Set(HAL_LED_2, HAL_LED_MODE_ON);              //LED2 亮  
  GUA_Led_Set(HAL_LED_3, HAL_LED_MODE_ON);              //LED3 亮
  GUA_Led_Set(HAL_LED_4, HAL_LED_MODE_ON);              //LED4 亮
  GUA_Led_Set(HAL_LED_ALL, HAL_LED_MODE_OFF);           //LED全灭
  GUA_Led_Set(HAL_LED_ALL, HAL_LED_MODE_ON);            //LED全亮
  GUA_Led_Set(HAL_LED_ALL, HAL_LED_MODE_TOGGLE);        //LED全反转一次
  GUA_Led_Set(HAL_LED_ALL, HAL_LED_MODE_FLASH);         //LED全亮灭一次

使用特权

评论回复
drer|  楼主 | 2019-7-10 10:23 | 显示全部楼层

实验结果


用仿真器单步执行,可以发现LED的测试代码实际现象,与香瓜注释相一致。下图为LED全亮时的状态。


使用特权

评论回复
dirtwillfly| | 2019-7-14 22:51 | 显示全部楼层
辛苦了

使用特权

评论回复
drer|  楼主 | 2019-7-25 14:02 | 显示全部楼层
客气了 举手之劳

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

3309

帖子

4

粉丝