本文最后修改时间:2017年10月17日 14:24

 

一、本节简介

本节以simple_peripheral工程为例,介绍如何用协议栈中的LED。

二、实验平台

1)CC2640R2F平台

①协议栈版本:CC2640R2 SDK v1.40.00.45

②编译软件:CCS7.3.0.00019

③硬件平台:香瓜CC2640R2F开发板

④仿真器:香瓜XDS100V3下载器

三、版权声明

1)作者:甜甜的大香瓜

2)声明:喝水不忘挖井人,转载请注明出处。

3)纠错/业务合作:897503845@qq.com

4)香瓜BLE之CC2640R2F群:557278427

5)本文出处:原创连载资料《简单粗暴学蓝牙5》

6)完整开源资料下载地址(电脑端打开):

https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

7)香瓜CC2640R2F开发板购买链接:

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4023-16963296339.8.21bfc58419sWKt&id=558653143169

8)香瓜XDS100V3下载器购买链接:

https://item.taobao.com/item.htm?spm=a230r.1.14.1.1d150040zvJBco&id=558356989143&ns=1&abbucket=6#detail

四、实验前提

1、在进行本文步骤前,请先阅读以下章节:

1)《简单粗暴学蓝牙5》的“第一章至第四章”章节​。

2)《PIN.h File Reference》:

file:///C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/docs/tidrivers/doxygen/html/_p_i_n_8h.html

2、在进行本文步骤前,请先实现以下章节:

1)《简单粗暴学蓝牙5》的“第三章 软件的安装及使用”章节。

五、基础知识

暂无

六、硬件原理

1、原理图

由上面两图可知,

名称

引脚

控制方法

LED1

DIO_25

高电平亮、低电平灭

LED2

DIO_27

高电平亮、低电平灭

LED3

DIO_7

高电平亮、低电平灭

LED4

DIO_0

高电平亮、低电平灭

注:SFM16是拨码开关。

2、开发板对应位置

需将拨码开关的左1(VCC)、右4(LED1)、右3(LED2)、右2(LED3)、右1(LED4)按键上拨。

七、实验步骤

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

1)写一个LED驱动GUA_Led.c(存放在“……\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\simple_peripheral\src\app\GUA”路径下)

//**********************************************************************
//name:         GUA_Led.c
//introduce:    香瓜自定义的LED驱动
//author:       甜甜的大香瓜
//email:        897503845@qq.com
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.17
//**********************************************************************
#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 <ti/drivers/PIN.h>#include "GUA_Led.h"/*********************宏定义************************/
//LEDS
#define GUA_LED1     PIN_ID(25)
#define GUA_LED2     PIN_ID(27)
#define GUA_LED3     PIN_ID(7)
#define GUA_LED4     PIN_ID(0)/*********************内部变量************************/
static PIN_State  sGUA_LedPins;
static PIN_Handle sGUA_HledPins = NULL;//IO配置
PIN_Config bGUA_LedPinsCfg[] =
{GUA_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,GUA_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,GUA_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,GUA_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,PIN_TERMINATE
};//**********************************************************************
//name:         GUA_Led_Set
//introduce:    香瓜点灯驱动
//parameter:    nGUA_Led_No:GUA_LED_NO_1、GUA_LED_NO_2、GUA_LED_NO_3、
//              GUA_LED_NO_4、GUA_LED_NO_ALL
//              nGUA_Mode:GUA_LED_MODE_OFF、GUA_LED_MODE_ON、
//              GUA_LED_MODE_FLASH、GUA_LED_MODE_TOGGLE
//return:       none
//author:       甜甜的大香瓜
//email:        897503845@qq.com
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.17
//**********************************************************************
void GUA_Led_Set(GUA_U8 nGUA_Led_No, GUA_U8 nGUA_Mode)
{GUA_U8 nGUA_I = 0;GUA_U8 nbGUA_Pin[4] = {GUA_LED1, GUA_LED2, GUA_LED3, GUA_LED4};//第一次使用时注册IOif(NULL == sGUA_HledPins){sGUA_HledPins = PIN_open(&sGUA_LedPins, bGUA_LedPinsCfg);}//依次检测4个led是否有执行动作for(nGUA_I = 0; nGUA_I <= 3; nGUA_I++){if(nGUA_Led_No & (1 << nGUA_I)){//执行模式switch(nGUA_Mode){//关灯模式case GUA_LED_MODE_OFF:{PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 0);break;}//开灯模式case GUA_LED_MODE_ON:{PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 1);break;}//先亮后灭一次case GUA_LED_MODE_FLASH:{PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 1);Task_sleep(10*1000/Clock_tickPeriod);PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 0);break;}//反转一次case GUA_LED_MODE_TOGGLE:{PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], !PIN_getOutputValue(nbGUA_Pin[nGUA_I]));break;}}}}
}

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之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.09.20
//**********************************************************************
#ifndef _GUA_LED_H_
#define _GUA_LED_H_/*********************宏定义************************/
//类型宏
#ifndef GUA_U8
typedef unsigned char GUA_U8;
#endif//LEDS
#define GUA_LED_NO_1            0x01
#define GUA_LED_NO_2            0x02
#define GUA_LED_NO_3            0x04
#define GUA_LED_NO_4            0x08
#define GUA_LED_NO_ALL          (GUA_LED_NO_1 | GUA_LED_NO_2 | GUA_LED_NO_3 | GUA_LED_NO_4)//Modes
#define GUA_LED_MODE_OFF        0x00
#define GUA_LED_MODE_ON         0x01
#define GUA_LED_MODE_FLASH      0x02
#define GUA_LED_MODE_TOGGLE     0x04/*********************函数声明************************/
extern void GUA_Led_Set(GUA_U8 nGUA_Led_No, GUA_U8 nGUA_Mode);#endif

  

3)工程中添加GUA_Led.c和GUA_Led.h

注:拖拽至CCS工程的Application文件夹下

3、应用层调用
1)添加头文件
(simple_peripheral.c中)

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

  

2)添加测试代码(simple_peripheral.c的SimpleBLEPeripheral_init函数末尾中)

//GUA  //点灯  GUA_Led_Set(GUA_LED_NO_1, GUA_LED_MODE_ON);           //LED1 亮  GUA_Led_Set(GUA_LED_NO_2, GUA_LED_MODE_ON);           //LED2 亮  GUA_Led_Set(GUA_LED_NO_3, GUA_LED_MODE_ON);           //LED3 亮  GUA_Led_Set(GUA_LED_NO_4, GUA_LED_MODE_ON);           //LED4 亮  GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_OFF);        //LED全灭  GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_ON);         //LED全亮  GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_TOGGLE);     //LED全反转一次  GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_FLASH);      //LED全亮灭一次
//GUA

  

八、注意事项
暂无

九、实验结果
用仿真器单步执行,可以发现LED的测试代码实际现象,与香瓜注释相一致。

转载于:https://www.cnblogs.com/opengua/p/7673922.html

【CC2640R2F】香瓜CC2640R2F之LED相关推荐

  1. CC2640R2F学习笔记(1)——搭建环境、编译烧写

    一.搭建环境 1.1 安装BLE5.0 协议栈 SDK 官网下载:http://www.ti.com/tool/download/SIMPLELINK-CC2640R2-SDK 百度网盘:https: ...

  2. CC2640R2F学习笔记(6)——UART串口使用

    一.硬件连接 串口 引脚 TXD DIO_2 RXD DIO_3 二.移植文件 链接:https://pan.baidu.com/s/1fE8XWgvdzYiF1bdUzTDxUg 提取码:r5s2 ...

  3. CC2640R2F学习笔记(7)——自定义服务和特征

    一.背景 1.1 Profile(规范) profile 可以理解为一种规范,一个标准的通信协议,它存在于蓝牙从机中(服务端): 蓝牙组织规定了一些标准的 profile,例如 HID OVER GA ...

  4. 关于CC2640R2F的OAD升级

    一.概念 1.什么是OAD升级 通过蓝牙对MCU进行空中升级. 2.什么是片外OAD升级 利用蓝牙将升级包下载到外部的flash中,然后再重启MCU,MCU启动后,再去外部的flash中读取升级包,最 ...

  5. cc2640软件用c语言开发,CC2640R2FTI-RTOS 拿到 TI CC2640R2F 开发板 第三件事就是使用 TI-RTOS 创建 一个任务 和 使用 信号量 超时来闪烁 LED灯...

    /** data_process.c * * Created on: 2018年7月5日 * Author: admin*/#include#include#include#include#inclu ...

  6. CC2640R2F之基础--工程管理篇(下)--外设驱动IO口分配(纯干货)

    原创博客,如有转载,注明出处--在金华的电子民工林. 引言:基于上一篇说了如何建立一个新工程,管理一个新工程,现在面临着一个问题,我们技术人员接到一个项目,不同的应用,硬件也不同啊,外设,IO口的分配 ...

  7. CC2640R2F之NOTIFY发送子程序

    原创博客,如有转载,注明出处--在金华的电子民工林. 协议栈的程序,有些还是比较粗糙的,比如如何发送notify,协议栈给的程序,调用的一层又一层,其实可以省略掉不少步骤.现在分享给大家一个发送NOT ...

  8. CC2640R2F BLE5.0 TI-RTOS概述

    TI-RTOS概述 TI-RTOS是CC2640R2F设备上低功耗蓝牙项目的运行环境.TI-RTOS内核是传统SYS/BIOS内核的定制版本,是一个具有驱动程序,同步和调度工具的实时抢占式多线程操作系 ...

  9. CC2640R2F学习笔记(五.第一个程序:GPIO点灯)

    文章目录 前言 一.生成配置文件 二.导入工程"empty" 三.代码改动 四.实现点灯 前言 点灯似乎是所有MCU开发编写的第一个程序,使用CUBEMX来配置STM32初始化程序 ...

  10. CC2640R2F之central程序讲解(上)

    原创博客,如有转载,注明出处--在金华的电子民工林. 当初本人写在另外一个论坛上,现在移到这边来.希望帮到更多人. 本文采用的是CC2640R2F1.40协议栈版本.高阶版本可做参考. 做完一个cen ...

最新文章

  1. python经典小游戏-python零基础入门的小游戏。
  2. Zepto.js简介
  3. Xcode10 闪退问题
  4. npm install 安装软件,出现 operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache'...
  5. 详解 height 和 width 属性
  6. 李洪强iOS开发之OC[012] -类的声明实现小结
  7. 成立仅一年的天猫好房,凭什么让55万人排队领钱?
  8. 集群节点数和分片数关系_离子晶体配位数与离子半径比的关系
  9. 祝每位读者在新的一年里虎虎有生气·事事皆如意!
  10. 设置linux服务器下开放端口
  11. 做对了什么与留下了什么 小米上市的背后
  12. 【Python - OpenCV】数字图像项目实战(四) - 位姿估计
  13. java操作word替换文字和在固定位置插入表格
  14. Elasticsearch与最新的log4j2零日漏洞
  15. python复数类型转换_Python程序设计——复数运算(包括极坐标转换)
  16. JNA 中 GetProcAddress(HMODULE hmodule, int ordinal) 的正确使用方式。LoadLibrary
  17. HTML、纯JS实现语音播放,实现定时刻播放
  18. python数据分析与挖掘实战(商品零售购物篮分析)
  19. STM32异常与中断过程详解
  20. 管理经济学【八】之 完全竞争市场中的企业决策

热门文章

  1. CICD详解(八)——gitlab安装与配置
  2. CICD详解(五)——SVN安装与配置
  3. Kubernetes之集群环境搭建
  4. LVM详解;Linux逻辑卷管理
  5. NYOJ--31 5个数求最值
  6. 《Python数据科学实践指南》——1.2 Python解释器
  7. webapp开发技术选型
  8. Spring Boot Web相关配置
  9. Javascript对象的方法赋值
  10. 我的java编程之路小小总结感想