蓝牙BLE

从机广播
主机扫描
发起连接(对什么设备)
连接建立
数据交换


蓝牙学习规划
蓝牙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(软件开发工具包)时。这个函数的主要作用是初始化与蓝牙相关的按键功能。

具体功能

  1. 初始化按键:该函数通常用于初始化用于蓝牙操作的按键,例如用于进入配对模式、重置设备或其他蓝牙相关功能的按键。

  2. 事件处理:在初始化过程中,可能还会设置按键的事件处理机制,以便在按键被按下或释放时,能够触发相应的蓝牙操作。

  3. 配置:根据实际需求,该函数可能包含按键配置,比如按键的 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不改变库:

 配置为长按后在配置管脚未使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值