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

相关文章

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件