cc2640 基于官方从机修改的通过手机实现蓝牙点灯例程
来源:互联网 发布:mac safari添加插件 编辑:程序博客网 时间:2024/04/28 15:03
在TI官方从机例程中的simpleBLEPeripheral.c进行代码修改。
添加引脚驱动头文件:
#include <ti/drivers/pin/PINCC26XX.h> //PIN driver
添加全局变量:
static PIN_Handle ledhandle=NULL;
在从机任务函数中添加 led on之后的代码。这里的代码是进行led灯初始化,四灯全亮。
static void SimpleBLEPeripheral_taskFxn(UArg a0, UArg a1)
{
// Initialize application
SimpleBLEPeripheral_init();
//led on
PIN_State ledstate={0};
PIN_Config ledconfig[]=
{
Board_LED1| PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH| PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_LED2| PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH| PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_LED3| PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH| PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_LED4| PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH| PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
};
ledhandle=PIN_open(&ledstate, ledconfig);
// Application main loop
for (;;)
{
................
如果只是硬件点灯,不需要手机进行控制,则不需要定义 ledhandle 这个变量。
其实在main函数第一行就有引脚的初始化定义:
Void main()
{
PIN_init(BoardGpioInitTable);
我们跳到这个Table里,可以看到配置如下,上面的配置代码可以复制这里,也可以直接使用这个数组进行配置。
PIN_Config BoardGpioInitTable[] = {
Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
Board_KEY_SELECT | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
Board_KEY_DOWN | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* UART TX pin at inactive level */
PIN_TERMINATE /* Terminate list */
};
配置到这里,烧录到开发板之后,四灯全亮,但只是硬件点亮,还不能进行手机控制。
下面修改与手机通信的代码。
原理:GATT(通用属性规范)负责设备之间的通信,它有五个属性。这里通过手机端的BLE READER app修改CHAR1值 达到控制led灯亮灭。
在 SimpleBLEPeripheral_processCharValueChangeEvt 函数中添加红色高亮代码:
static void SimpleBLEPeripheral_processCharValueChangeEvt(uint8_t paramID)
{
#ifndef FEATURE_OAD
uint8_t newValue;
switch(paramID)
{
case SIMPLEPROFILE_CHAR1:
SimpleProfile_GetParameter(SIMPLEPROFILE_CHAR1, &newValue);
LCD_WRITE_STRING_VALUE("Char 1:", (uint16_t)newValue, 10, LCD_PAGE4);
{
if(newValue==2)
{
PIN_setOutputValue(ledhandle,Board_LED1, Board_LED_OFF);
}
else
{ PIN_setOutputValue(ledhandle,Board_LED1, Board_LED_ON);}
}
break;
到此为止,代码修改就结束了。
BLE READER 操作:点击相应蓝牙名连接之后,依次点击Beacon、Proximity,出现char读写界面。按上面的代码,写入2关闭led1,其余合法数字打开led1.
参考TI developer‘s guide page62 and page 88.
- cc2640 基于官方从机修改的通过手机实现蓝牙点灯例程
- 蓝牙手机图书馆 官方
- 基于CC2640的SPI通讯
- 不刷机修改开机第二屏的简单方法
- CC2640 SimpleBLEPeripheral 例程
- CC2640 SimpleBLEPeripheral例程-2
- CC2640例程2
- 蓝牙笔和手机通过蓝牙协议的通讯
- CC2541/CC2640 如何实现一主多从
- 基于TI-RTOS的CC2640 UART
- 基于TI-RTOS的CC2640 UART
- 赛车游戏(一)通过蓝牙实现两个手机交互
- android通过蓝牙实现两台手机传输数据
- IAR编译CC2640蓝牙项目出错的解决方法
- 笔记本电脑通过手机蓝牙上网
- vista xp系统的笔记本通过蓝牙连接手机上网
- 基于stm32的手机蓝牙智能小车的设计
- 基于手机蓝牙的可配置应用程序遥控
- MAX232芯片使用方法
- ubuntu 14.04 登录 界面 root
- Maven仓库代理信息
- java Io梳理
- opencv imread imwrite "Unhandled exception in ***.exe(msvcr100d.dll):OxC0000005"
- cc2640 基于官方从机修改的通过手机实现蓝牙点灯例程
- 读书笔记----白帽子讲web安全--2015-11-27
- struts2文件上传下载原理
- java 11-27
- 验证身份证正则表达式讲解
- jquery图片轮播
- php中curl_multi的应用
- [数据挖掘]非线性支持向量机:核方法
- 黑马程序员—JAVA基础——集合