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

2024-01-19 06:08

本文主要是介绍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 建立:

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

                                                                       

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

                                                                        

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

                                                                       

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

                                                              

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

                                                                

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

                                                               

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

                                                                

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

                                                              

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

 

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

这篇关于nRF52832-Bluefruit52学习之蓝牙BLE开发(1)-- 蓝牙BLE样例工程介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621464

相关文章

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP