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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设