【CC2640R2F】香瓜CC2640R2F之LED
本文最后修改时间: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相关推荐
- CC2640R2F学习笔记(1)——搭建环境、编译烧写
一.搭建环境 1.1 安装BLE5.0 协议栈 SDK 官网下载:http://www.ti.com/tool/download/SIMPLELINK-CC2640R2-SDK 百度网盘:https: ...
- CC2640R2F学习笔记(6)——UART串口使用
一.硬件连接 串口 引脚 TXD DIO_2 RXD DIO_3 二.移植文件 链接:https://pan.baidu.com/s/1fE8XWgvdzYiF1bdUzTDxUg 提取码:r5s2 ...
- CC2640R2F学习笔记(7)——自定义服务和特征
一.背景 1.1 Profile(规范) profile 可以理解为一种规范,一个标准的通信协议,它存在于蓝牙从机中(服务端): 蓝牙组织规定了一些标准的 profile,例如 HID OVER GA ...
- 关于CC2640R2F的OAD升级
一.概念 1.什么是OAD升级 通过蓝牙对MCU进行空中升级. 2.什么是片外OAD升级 利用蓝牙将升级包下载到外部的flash中,然后再重启MCU,MCU启动后,再去外部的flash中读取升级包,最 ...
- cc2640软件用c语言开发,CC2640R2FTI-RTOS 拿到 TI CC2640R2F 开发板 第三件事就是使用 TI-RTOS 创建 一个任务 和 使用 信号量 超时来闪烁 LED灯...
/** data_process.c * * Created on: 2018年7月5日 * Author: admin*/#include#include#include#include#inclu ...
- CC2640R2F之基础--工程管理篇(下)--外设驱动IO口分配(纯干货)
原创博客,如有转载,注明出处--在金华的电子民工林. 引言:基于上一篇说了如何建立一个新工程,管理一个新工程,现在面临着一个问题,我们技术人员接到一个项目,不同的应用,硬件也不同啊,外设,IO口的分配 ...
- CC2640R2F之NOTIFY发送子程序
原创博客,如有转载,注明出处--在金华的电子民工林. 协议栈的程序,有些还是比较粗糙的,比如如何发送notify,协议栈给的程序,调用的一层又一层,其实可以省略掉不少步骤.现在分享给大家一个发送NOT ...
- CC2640R2F BLE5.0 TI-RTOS概述
TI-RTOS概述 TI-RTOS是CC2640R2F设备上低功耗蓝牙项目的运行环境.TI-RTOS内核是传统SYS/BIOS内核的定制版本,是一个具有驱动程序,同步和调度工具的实时抢占式多线程操作系 ...
- CC2640R2F学习笔记(五.第一个程序:GPIO点灯)
文章目录 前言 一.生成配置文件 二.导入工程"empty" 三.代码改动 四.实现点灯 前言 点灯似乎是所有MCU开发编写的第一个程序,使用CUBEMX来配置STM32初始化程序 ...
- CC2640R2F之central程序讲解(上)
原创博客,如有转载,注明出处--在金华的电子民工林. 当初本人写在另外一个论坛上,现在移到这边来.希望帮到更多人. 本文采用的是CC2640R2F1.40协议栈版本.高阶版本可做参考. 做完一个cen ...
最新文章
- python经典小游戏-python零基础入门的小游戏。
- Zepto.js简介
- Xcode10 闪退问题
- npm install 安装软件,出现 operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache'...
- 详解 height 和 width 属性
- 李洪强iOS开发之OC[012] -类的声明实现小结
- 成立仅一年的天猫好房,凭什么让55万人排队领钱?
- 集群节点数和分片数关系_离子晶体配位数与离子半径比的关系
- 祝每位读者在新的一年里虎虎有生气·事事皆如意!
- 设置linux服务器下开放端口
- 做对了什么与留下了什么 小米上市的背后
- 【Python - OpenCV】数字图像项目实战(四) - 位姿估计
- java操作word替换文字和在固定位置插入表格
- Elasticsearch与最新的log4j2零日漏洞
- python复数类型转换_Python程序设计——复数运算(包括极坐标转换)
- JNA 中 GetProcAddress(HMODULE hmodule, int ordinal) 的正确使用方式。LoadLibrary
- HTML、纯JS实现语音播放,实现定时刻播放
- python数据分析与挖掘实战(商品零售购物篮分析)
- STM32异常与中断过程详解
- 管理经济学【八】之 完全竞争市场中的企业决策