蓝牙外部信号处理机制

开始者 <a href="http://community.silabs.com/t5/Welcome-and-Announcements/Community-Ranking-System-and-Recognition-Program/m-p/140490#U140490"><font color="#000000"><font size="2">Hero Employee</font></font> </a> Kevin_Fu 修改时间 ‎10-13-2017 01:11 PM

简介

BLE SDK中的外部信号机制使得用户可以在安全的情况下去处理外部触发的事件,比如GPIO中断。

讨论

用户可以调用API  gecko_external_signal()将最多32个独立的事件信号从应用层上报至蓝牙协议栈,其由一个32位的变量来指示,每一个独立的位指示一个用户自定义的事件。调用gecko_external_signal()之后,蓝牙协议栈会产生一个system_external_signal事件,用户可以在这个事件中去对外部信号进行处理。

示例

附件的示例程序是基于EFR32BG1P的,其可以很简单的移植到其他EFR32BG的硬件上。这个示例程序在按键按下时,给蓝牙协议栈发送一个信号。第一步是配置GPIO中断,在boot事件触发后进行配置,配置GPIO为输入,使能中断以及中断回调的注册。当按键被按下时,ButtonHandler就会被调用。

结论

外部信号机制是一个简单的易用的方式来实现蓝牙协议栈对应用层事件的调度,其可以很好的对非协议事件进行调度。