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

相关文章

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE