从机广播
主机扫描
发起连接(对什么设备)
连接建立
数据交换
蓝牙学习规划
蓝牙BLE工程搭建
蓝牙任务的建立(私有服务,自定义。SIG小组共有服务。UUID)
蓝牙数据传输(蓝牙串口透传(接收数据内部FLASH存储),蓝牙遥控器实现(温湿度采集方法),讨论传输速度大小)
蓝牙参数及安全设置(安全属性)(MAC,rssi,密钥)
蓝牙综合应用(ibeacon,自定义广播域动态广播,防丢器(双向呼叫,防止丢失)蓝牙DFU,固件升级)
什么是单模和双模,BLE和蓝牙4.x的区别以及蓝牙5.0的三大特点
BLE
BLE是蓝牙低功耗的简称(bluetooh low energy)。蓝牙低功耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。超低功耗无线技术,利用许多只能手段最大限度的降低功耗
低成本,低功耗
快速启动,瞬间链接,最快3ms低延时
传输距离的提高
高安全性,使用AES-128加密算法进行数据报加密认证
低功耗蓝牙分为单模和双模
单模设备:只支持蓝牙低功耗,用nrf51822开发的蓝牙设备即为单模设备,单模设备对低功耗要求很高。手环
双模设备:既支持传统蓝牙也支持蓝牙低功耗,这两种技术使用同一个射频前端和天线,双模设备一般都有足够的供电能力,对低功耗要求不高。智能手机
协议栈下log输出
协议栈下软件定时器的配置
调用RTC(实时计数器),可以同时有多个软件定时器
APP定时器
协议栈下的按键使用
蓝牙工程框架,有库函数配置
协议栈下配置按键触发事件
按下点灯,按下报警,按下开始广播,按下开始扫描
buttons_leds_init(&erase_bonds);//协议栈下按键初始化。按键和LED灯的初始化配置
static void buttons_leds_init(bool * p_erase_bonds)
{
ret_code_t err_code;
bsp_event_t startup_event;
//初始化按键和LED,并注册按键中断任务事件,触发回调事件(按下按键之后他的处理)
err_code = bsp_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS, bsp_event_handler);
APP_ERROR_CHECK(err_code);
//配置IO端口的对应按键事件,配置按键事件的触发
err_code = bsp_btn_ble_init(NULL, &startup_event);
APP_ERROR_CHECK(err_code);
*p_erase_bonds = (startup_event == BSP_EVENT_CLEAR_BONDING_DATA);
}
协议栈下配置按键触发事件
1:配置回调函数里,对应事件触发后执行的操作
case BSP_EVENT_KEY_3:
nrf_gpio_pin_toggle(LED_2);
break;
2.事件是怎么触发的?
err_code = bsp_btn_ble_init(NULL, &startup_event);。。。找到广播的按键配置(advertising_buttons_configure();)
补充:bsp_btn_ble_init里面的bsp是什么意思
在嵌入式系统开发中,"BSP" 通常代表 "Board Support Package",即板级支持包。该词汇通常用于描述为特定硬件平台提供支持的软件代码集合。在这种情况下,bsp_btn_ble_init
函数名中的 "bsp" 可能表示与特定硬件板支持相关的按键初始化函数。
因此,bsp_btn_ble_init
可能是针对特定硬件板的支持包中用于初始化蓝牙按键功能的函数。在这种情况下,"bsp" 表示这个函数是特定硬件板级别的支持代码。
bsp_btn_ble_init
是一个函数名,通常出现在与蓝牙低功耗(BLE,Bluetooth Low Energy)相关的嵌入式系统代码中,特别是在使用 Nordic Semiconductor 的 SDK(软件开发工具包)时。这个函数的主要作用是初始化与蓝牙相关的按键功能。
具体功能
-
初始化按键:该函数通常用于初始化用于蓝牙操作的按键,例如用于进入配对模式、重置设备或其他蓝牙相关功能的按键。
-
事件处理:在初始化过程中,可能还会设置按键的事件处理机制,以便在按键被按下或释放时,能够触发相应的蓝牙操作。
-
配置:根据实际需求,该函数可能包含按键配置,比如按键的 GPIO 引脚设置、按键的去抖动处理等。
使用场景
在使用 BLE 模块的嵌入式应用中,bsp_btn_ble_init
函数通常是程序启动时被调用的一部分,确保按键的功能可以正常工作,以实现用户与设备的交互。
uint32_t bsp_btn_ble_init(bsp_btn_ble_error_handler_t error_handler, bsp_event_t * p_startup_bsp_evt)
{
uint32_t err_code = NRF_SUCCESS;
m_error_handler = error_handler;
if (p_startup_bsp_evt != NULL)
{
startup_event_extract(p_startup_bsp_evt);
}
if (m_num_connections == 0)
{
err_code = advertising_buttons_configure();
}
return err_code;
}
//按下开发板按键4,会触发KEY_3事件
err_code = bsp_event_to_button_action_assign(3,//按键对应的ID
APP_BUTTON_PUSH,//按的方式
BSP_EVENT_KEY_3);//触发的事件
RETURN_ON_ERROR_NOT_INVALID_PARAM(err_code);
2.按键下的长按和短按
广播按键配置啊参数中,需要改几个参数
广播按键配置:advertising_buttons_configure
//按下开发板按键4,会触发KEY_3事件
err_code = bsp_event_to_button_action_assign(3,
//按键按下方式
BSP_BUTTON_ACTION_LONG_PUSH,
//避免在默认bsp_init函数里面已经配置的触发事件
BSP_EVENT_KEY_4);
长按事件:设置案件定时器的定时时间
3.按键数量的增加
3.1找到数量增加的大小范围
使能了高能精度GPIOTE输入方式,8个端口
如果使能的是GPIOTE port方式,31个端口。默认配置文件
3.2改
3.3硬件文件里(nrf52840)
4.默认按键长按和短按的分离
两种方法:目标就是避免默认配置的触发事件,短按
4.1:直接删除默认短按配置事件,在函数bsp_init()
4.2不改变库:
配置为长按后在配置管脚未使用