BLE学习笔记4:协议栈初始化

BLE协议栈的初始化实现了三个部分的功能:初始化时钟,协议栈使能,回调派发函数使能。

1.初始化时钟

BLE协议栈时钟有一下三个选项,功耗由低至高排序:

#define NRF_CLOCK_LF_SRC_XTAL    (1)                        /**< LFCLK crystal oscillator. */
#define NRF_CLOCK_LF_SRC_RC      (0)                        /**< LFCLK RC oscillator. */
#define NRF_CLOCK_LF_SRC_SYNTH   (2)                        /**< LFCLK Synthesized from HFCLK. */

推荐使用XTAL外部晶振时钟。

2.协议栈使能

由于蓝牙协议栈本身是不开源的,只留出接口让用户直接传入参数,因此协议栈的使能是十分简单的,本质是为蓝牙协议栈事件分配RAM空间。

  ble_enable_params_t ble_enable_params;
  err_code = softdevice_enable_get_default_config(CENTRAL_LINK_COUNT,
                                                    PERIPHERAL_LINK_COUNT,
                                                    &ble_enable_params);
  APP_ERROR_CHECK(err_code);
  
  CHECK_RAM_START_ADDR(CENTRAL_LINK_COUNT,PERIPHERAL_LINK_COUNT);//根据主从机链接数分配空间
   //使能协议栈 
  err_code = softdevice_enable(&ble_enable_params);
  APP_ERROR_CHECK(err_code);

3.回调派发函数使能

协议栈初始化的重点在于回调派发函数的使能,由于nRF51/52系列蓝牙处理芯片并不带操作系统,因此其事件处理采用派发方式。当蓝牙协议栈有事件需要处理时就会用到蓝牙事件派发,当系统有事件需要处理时就会用到系统事件派发。
协议栈会通过ble_evt_dispatch(or sys_evt_dispatch)将和BLE有关的事件上抛给服务函数,给出事件id。每个处理函数处理的事件,在事件结构体ble_evt_t通过id标注,不同服务函数只关心和自己有关的事件id。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生活在别处u

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值