nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       nRF52832技术交流群:680723714

       nRF52832-Bluefruit52核心板详细介绍:

https://blog.csdn.net/solar_Lan/article/details/88688451

                          蓝牙 BLE 之样例的建立

       蓝牙 BLE 样例是为了让我们学习如何在 nRF52832 芯片上开发一个 BLE 应用而提供的模板工程,它是一个官方提供 BLE 的应用实例,具有通用性。为后面我们开发自己的应用实例提供参考,我们大可通过修改这个样本工程来实现我们自己需求。

       蓝牙工程需要关注什么?如何搞清楚其主体框架?这几个问题我们下面就来详细讨论下:

1 、蓝牙样例工程结构:

       蓝牙工程里包含了很多文件和工程目录,这些工程是做什么用的?哪些是必须的?如何认识?那么我们首先来看看 BLE 蓝牙程序工程结构,结构如下图所示,工程建立是分层设置的,也就是应用层,协议层和硬件设备分开编译,这种方式对后面我们编写私有任务非常有力。在讲解源代码的时候我们结合蓝牙协议来说明。

       首先,打开 SDK 中如下工程目录下的工程文件,工程文件以 keil 建立:

nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第一部分: Device工程树,该工程树中包含了两个文件,一个文件为 arm_startup_nrf52.s 是 nrf52 芯片的启动文件,该文件配置了芯片初始化启动的时候的堆栈空间,中断声明,启动循序等参数,这些参数是芯片开机首先要运行配置的,该文件是最底层的配置文件,以汇编来书写。另外一文件为 system_nrf52.c 文件,这个文件是芯片系统文件,在运行 main 函数之前运行,配置了处理器的初始化时钟,寄存器等参数。这两个文件是工程必须的。如下图所示:

                                                                       nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第二部分:Application 应用工程树,该工程树中主要就两个文件,一个是主函数 main.c 文件,该文件后面会拿出来具体讨论。第二个文件 sdk_config.h 配置文件,该文件也是非常重要的一个文件,各种外设或者驱动,都需要再这个文件里进行配置设置,这个文件会结合到后面的编程里具体提及:

                                                                        nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第三部分:Board Definition 板载定义和 Board Support 支持目录树,主要是按键和 LED 灯的功能的一些设置。比如协议栈下按键唤醒,按键休眠,长按与短按等配置功能。当然这两个文件在蓝牙工程里是可选的,你可以自己编写或者根据自己的硬件来进行修改。

                                                                       nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第四部分:nRF_BLE 文件夹,本文件夹提供一些蓝牙服务代码,比如广播的配置代码,连接参数的配置代码,GATT 的配置代码,还有 peer 设备匹配管理的代码,安全参数设置的代码等。  

                                                              nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第五部分: nRF_Drivers 文件夹,提供外设驱动函,这个文件夹提供的新版本的外设驱动文件库,区别与老版本外设驱动,用 nrfx 表示新版驱动,不过 sdk15 外设任然可以兼容老板外设驱动文件库。

                                                                nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第六部分 :nRF_Libraries 文件夹,提供外设驱动函数代码。nRF52832 提供的一些现成的库函数,这些函数是和硬件紧密相连的,这样带有 nrf 前缀的就是和 NRF 芯片处理相关的库函数,包含了一些内存处理,打印,缓冲,电源管理等文件。带有 app 前缀的文件是和应用有关系的库函数,是以外设驱动为基础的二级驱动文件。

                                                               nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第七部分: nRF_log 工程目录树和 nRF_Segger_RTT 工程目录树,这两个部分是提供一个打印输出接口,提供人家交互的一种方式。Log 打印输出可以使用两个通道,一个就是 uart 串口,在 log 驱动文件夹里有配置。另外一种就是使用 jlink 仿真器的 RTT 打印的输出方式,在串口端口被占用的时候使用。

                                                                nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       第八部分: nRF_SoftDevice 工程目录树,这里包含的文件主要是配置协议栈初始化的时候协议栈的参数设定,由于协议栈实际上是不开源的,而是留下了配置接口,这些配置接口通过客户配置相关协议栈的参数来设置协议栈运行状态。

                                                              nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍

       以上的八个部分是一个蓝牙样板工程里应该包含的内容,其文件数量众多,为了方便初学者或者使得开发者尽快的实现项目开发,不建议大家重新搭建工程,而是尽可能的在样板工程中进行修改与编程,节省大量开发时间。

 

已经很晚了,后面再继续对蓝牙内容框架进行分析。觉得博文对您有帮助,请关注一下吧。

上一篇:影像组学视频学习笔记(43)-标准差、标准误及95%置信区间CI、Li‘s have a solution and plan.


下一篇:可视化分析包大小的插件webpack-bundle-analyzer