CC2650 SensorTag之按键操作

原料:TI CC2650 Sensortag
开发环境:Code Composer Studio v8
驱动版本:tirtos_cc13xx_cc26xx_2_20_01_08, ble_sdk_2_02_01_18
工程:Simple_peripheral_cc2650stk_app

1. 打开simple_peripheral.c,导入PIN引脚驱动文件:

#include <ti/drivers/pin/PINCC26xx.h>

2. 声明pin引脚设置和状态,以及simple_peripheral任务调用的Handler.

static PIN_Config SBP_configTable[] = 
{ Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, 
Board_BUTTON0 | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, PIN_TERMINATE };
static PIN_State sbpPins;
static PIN_Handle hSbpPins;
static uint8_t LED_value = 0;

 注意到Board_LED1和Board_BUTTON1都已经在Board.h头文件中定义好,Board_LED1对应原理图中的LED1(红色LED),而Board_BUTTON0对应于原理图中的BUTTON2,都指向于IOID_0

/* These #defines allow us to reuse TI-RTOS across other device families */
#define     Board_LED1              Board_STK_LED1
#define     Board_LED2              Board_STK_LED2

#define     Board_BUTTON0           Board_KEY_LEFT
#define     Board_BUTTON1           Board_KEY_RIGHT

在CC2650STK.h中:

/* Discrete outputs */
#define Board_STK_LED1              IOID_10
#define Board_STK_LED2              IOID_15

#define Board_BUZZER                IOID_21
#define Board_LED_ON                1
#define Board_LED_OFF               0
#define Board_BUZZER_ON             1
#define Board_BUZZER_OFF            0

/* Discrete inputs */
#define Board_KEY_LEFT              IOID_0
#define Board_KEY_RIGHT             IOID_4

#define Board_RELAY                 IOID_3

 在原理图中:

 

3. 声明硬中断的中断应用程序(ISR).

static void buttonHwiFxn(PIN_Handle hPin, PIN_Id pinId);
static void buttonHwiFxn(PIN_Handle hPin, PIN_Id pinId) { 
//set event in SBP task to process outside of hwi context events |= SBP_BTN_EVT;
//wake up the application
Semaphore_post(sem); }

中断程序将在程序任务中设置事件,并适时唤醒它以降低硬中断的资源处理量

4. 在simple_peripheral_taskFxn()中定义事件和相关处理来自以上中断程序的事件.

#define SBP_BTN_EVT
if (events & SBP_BTN_EVT)
{ events &= ~SBP_BTN_EVT;//clear event
//toggle LED1
if (LED_value) { PIN_setOutputValue(hSbpPins, Board_LED1 , LED_value--); }
else { PIN_setOutputValue(hSbpPins, Board_LED1, LED_value++); } }

5. 打开pins,在simple_peripheral_init()设置中断.

// Open pin structure for use
hSbpPins = PIN_open(&sbpPins, SBP_configTable);
// Register ISR
PIN_registerIntCb(hSbpPins, buttonHwiFxn);
// Configure interrupt
PIN_setConfig(hSbpPins, PIN_BM_IRQ, Board_KEY_UP | PIN_IRQ_NEGEDGE);
// Enable wakeup
PIN_setConfig(hSbpPins, PINCC26XX_BM_WaKEUP, Board_KEY_UP|PINCC26XX_WAKEUP_NEGEDGE);

编译、下载并运行以上程序。

试验结果:

按下左键(SW2)红色LED指示灯亮,再次按下时LED熄灭,试验成功

参考资料:swru393e - BLE Software Developer's Guide

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
新的 SimpleLink 多标准 SensorTag 物联网套件邀请您将自己的云连接产品创意付诸实践。该套件包含 10 个低功耗 MEMS 传感器,采用小尺寸封装,可以使用 DevPack 实现扩展,易于添加您自己的传感器或传动器。 通过 Bluetooth Smart:registered: 连接到云,在三分钟内在线获得传感器数据。SensorTag 开箱即可使用,带有 iOS 和 Android 应用,无需编程经验即可开始使用。 新 SensorTagCC2650 无线 MCU 为基础,功耗比此前的蓝牙智能产品低 75%。因此,SensorTag 可以使用电池供电,一个纽扣电池就可以使用几年。 蓝牙智能 SensorTag 包含 iBeacon 技术。该技术使您的电话可以根据 SensorTag 数据和物理位置启动应用程序并自定义内容。 此外,可通过 ZigBee:registered: 和 6LoWPAN 技术启用 SensorTag。 ► 核心技术优势 Ti CC2650 穿戴式演示套件 ► 方案规格 支持 10 个低功耗传感器,包括环境光、数字麦克风、磁传感器、湿度、压力、加速计、陀螺仪、磁力计、物体温度以及环境温度 超低功耗,通过单个纽扣电池提供数年的电池寿命,并通过高性能 ARM:registered: Cortex:registered:-M3 CC2650 无线 MCU 实现无电池应用。 可借助云连接从任意地点访问和控制您的 SensorTag 可借助多标准支持通过简单的固件升级启用 ZigBee 或 6LoWPAN DevPack 让您可以按照自己的设计扩展 SensorTag 方案来源于大大通。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值