Nordic软件二[蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题][BSP代码模块修改管脚和相关机制]

蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题

本文摘录于:https://blog.csdn.net/chengbaojin/article/details/103778150只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人!
先参考上面的文章做如下修改:
在这里插入图片描述

将如下代码:
// <0=> NRF_CLOCK_LF_SRC_RC 内部时钟
// <1=> NRF_CLOCK_LF_SRC_XTAL 外部晶振时钟
// <2=> NRF_CLOCK_LF_SRC_SYNTH  从高速时钟合成的低速时钟#ifndef NRF_SDH_CLOCK_LF_SRC
#define NRF_SDH_CLOCK_LF_SRC 1 
#endif// <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. 
#ifndef NRF_SDH_CLOCK_LF_RC_CTIV
#define NRF_SDH_CLOCK_LF_RC_CTIV 0 
#endif
修改为:
// <0=> NRF_CLOCK_LF_SRC_RC 内部时钟
// <1=> NRF_CLOCK_LF_SRC_XTAL 外部晶振时钟
// <2=> NRF_CLOCK_LF_SRC_SYNTH  从高速时钟合成的低速时钟#ifndef NRF_SDH_CLOCK_LF_SRC
#define NRF_SDH_CLOCK_LF_SRC 0 
#endif// <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. 
#ifndef NRF_SDH_CLOCK_LF_RC_CTIV
#define NRF_SDH_CLOCK_LF_RC_CTIV 16 
#endif

除了上面的修改还要修改这里:
在这里插入图片描述

// <o> NRFX_CLOCK_CONFIG_LF_SRC  - LF Clock Source// <0=> RC 
// <1=> XTAL 
// <2=> Synth 
// <131073=> External Low Swing 
// <196609=> External Full Swing #ifndef NRFX_CLOCK_CONFIG_LF_SRC
#define NRFX_CLOCK_CONFIG_LF_SRC 0
#endif

原来是打印怎么都出来不了,修改后打印正常了:
在这里插入图片描述

BSP代码模块修改管脚和回调事件

Nordic用BSP机制来管理button和led,main函数调用buttons_leds_init函数进行初始化:

static void buttons_leds_init(bool * p_erase_bonds)
{bsp_event_t startup_event;uint32_t err_code = bsp_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS, bsp_event_handler);APP_ERROR_CHECK(err_code);err_code = bsp_btn_ble_init(NULL, &startup_event);APP_ERROR_CHECK(err_code);*p_erase_bonds = (startup_event == BSP_EVENT_CLEAR_BONDING_DATA);
}

这里同时使用了LED和button的功能,回调事件为:

void bsp_event_handler(bsp_event_t event)
{uint32_t err_code;switch (event){case BSP_EVENT_KEY_2:NRF_LOG_INFO("BSP_EVENT_KEY:%d",event);LEDandBUZZset(true);break;}
}

button的定义如下:
在这里插入图片描述
在这里插入图片描述


#define BUTTON_1       9//13
#define BUTTON_2       30//14#define BSP_BUTTON_0   BUTTON_1
#define BSP_BUTTON_1   BUTTON_2static const app_button_cfg_t app_buttons[BUTTONS_NUMBER] =
{#ifdef BSP_BUTTON_0{BSP_BUTTON_0, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_0#ifdef BSP_BUTTON_1{BSP_BUTTON_1, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_1#ifdef BSP_BUTTON_2{BSP_BUTTON_2, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_2#ifdef BSP_BUTTON_3{BSP_BUTTON_3, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_3#ifdef BSP_BUTTON_4{BSP_BUTTON_4, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_4#ifdef BSP_BUTTON_5{BSP_BUTTON_5, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_5#ifdef BSP_BUTTON_6{BSP_BUTTON_6, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_6#ifdef BSP_BUTTON_7{BSP_BUTTON_7, false, BUTTON_PULL, bsp_button_event_handler},#endif // BUTTON_7};

这里测试到一个问题,明明我的GPIO9定义为BSP_BUTTON_0,为啥上报事件为BSP_EVENT_KEY_2,继续往下看advertising_buttons_configure函数中这样关联BSP_EVENT_KEY_2和BTN_ID_REQ:

#define BTN_ID_REQ                0//2  
#define BTN_ID_UPDATE_ADV         1//3  err_code = bsp_event_to_button_action_assign(BTN_ID_REQ,BSP_BUTTON_ACTION_PUSH,BSP_EVENT_KEY_2);
uint32_t bsp_event_to_button_action_assign(uint32_t button, bsp_button_action_t action, bsp_event_t event)

其实转了一圈后发现BTN_ID_REQ也是ID,Nordic就是这样一个定义转来转去!由上面的代码可以看到把BTN_ID_REQ(和BUTTON_1有关系)的BSP_BUTTON_ACTION_PUSH事件和BSP_EVENT_KEY_2关联了,所以在bsp_event_handler函数中可以直接用BSP_EVENT_KEY_2来判断是BUTTON_1的单机事件!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150033.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

中国科学院云南天文台博士招生目录

中国科学院云南天文台是专业基础研究与应用研究结合的综合性天文研究机构&#xff08;其前身是1938年中央研究院天文研究所在昆明东郊凤凰山创建的凤凰山天文台&#xff09;&#xff0c;总部在云南省昆明市&#xff0c;设有两个观测站&#xff08;丽江高美古天文观测站和澄江抚…

使用通义灵码,参与开源项目全程纪实

作者&#xff1a;shuipin100-34561 背景 缘起 OceanBase。作为一个充满好奇心的 DBA&#xff0c;一直一来想探寻数据库的内部世界。开源为我们这些好奇的猫打开了一扇新世界的大门。OceanBase 作为分布式关系型数据库的排头兵&#xff0c;自然进入了我的优选名单。起初走进了…

ComfyUI中缺失节点安装一点小小注意事项

加载工作流&#xff0c;遇到了红当当的缺失节点警告窗口&#xff1a; 在ComfyUI-Manager点击安装缺失节点&#xff0c;发现竟然弹出4个&#xff0c;而上面告警窗口中只是缺失3个&#xff0c;究竟是怎么回事呢&#xff0c;刚开始接触ComfyUI时&#xff0c;我也是不管3721&#x…

04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码

总目录:人脸检测与表情分类 https://blog.csdn.net/whiffeyf/category_12793480.html 目录 0 相关资料1 面部表情识数据集2 模型下载3 训练0 相关资料 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/1…

【c语言数据结构】超详细!模拟实现双向链表(初始化、销毁、头删、尾删、头插、尾插、指定位置插入与删除、查找数据、判断链表是否为空)

特点&#xff1a; 结构&#xff1a;指向前一结点指针数据指向后一结点指针由于循环&#xff0c;尾结点的下一结点next指向头结点&#xff08;哨兵结点&#xff09;空的双向链表只有自循环的哨兵结点&#xff08;头结点&#xff09; 模拟实现双向链表 LIST.h #define _CRT_…

【WorldView系列卫星】

WorldView系列卫星 WorldView系列卫星是美国DigitalGlobe公司推出的一系列先进商业遥感卫星&#xff0c;旨在提供高分辨率的地球成像服务。该系列卫星以其卓越的成像能力&#xff0c;如高分辨率、快速重访时间和宽幅扫描能力&#xff0c;引领了地球观测技术的新标准。以下是对…

最新版C/C++通过CLion2024进行Linux远程开发保姆级教学

目前来说&#xff0c;对Linux远程开发支持相对比较好的也就是Clion和VSCode了&#xff0c;这两个其实对于C和C语言开发都很友好&#xff0c;大可不必过于纠结使用那个&#xff0c;至于VS和QtCreator&#xff0c;前者太过重量级了&#xff0c;后者更是不用说&#xff0c;主要用于…

110Redis 简明教程--Redis 数据类型

Redis strings 字符串是一种最基本、最常用的 Redis 值类型。 Redis 字符串是二进制安全的&#xff0c;这意味着一个 Redis 字符串能包含任意类型的数据&#xff0c;例如&#xff1a; 一张经过 base64 编码的图片或者一个序列化的 Ruby 对象。通过这样的方式&#xff0c;Redis …

双亲委派机制SPI

SPI如何破坏双亲委派机制&#xff1f;可根据以下概念一步步深入 什么是双亲委派机制&#xff1f; 双亲委派机制是Java类加载器体系中采用的一种类加载策略&#xff0c;旨在保证类加载的安全性和稳定性。 这一机制规定了类加载的顺序和规则&#xff0c;即当一个类加载器收到类…

创建单链表

一、完成单链表操作&#xff0c;要求节点构造类型。 1、建立学生结构体&#xff08;学号&#xff0c;姓名&#xff0c;成绩&#xff09; 2、循环调用头插法创建整表 3、遍历单链表 4、任意位置插入一个完整的学生信息 5、任意位置删除一个学生。 6、单链表逆置 7、单链表按照学…

SpringBoot框架在文档管理中的创新应用

第3章 系统分析 3.1 需求分析 在线文档管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足员工&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性&#xff0c;遵循…

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后&#xff0c;开始我们的第一个监控-监控linux系统。 参考官方文档&a…

最古早的linux发行版,已发行30年!!

最古早的linux发行版&#xff0c;已发行30年&#xff01;&#xff01; 当谈到 Linux 发行版时&#xff0c;大多数人首先想到的可能是像 Ubuntu、Fedora 或 CentOS 这样的知名发行版。然而&#xff0c;在 Linux 的世界中&#xff0c;还有一款古老而稳定的发行版&#xff0c;它以…

SIGformer: Sign-aware Graph Transformer for Recommendation---论文学习笔记

SIGIR 2024 用于推荐的符号感知图像转换器 摘要 在推荐系统中&#xff0c;大多数基于图的方法主要关注用户的正面反馈&#xff0c;而忽视了负面反馈的价值。而将正负反馈结合起来形成符号图可以更全面地理解用户偏好。然而&#xff0c;现有的尝试整合这俩种类型反馈的方法很…

图片压缩工具免费怎么找?归纳了这几个压缩工具

有哪些图片压缩工具免费&#xff1f;在数字化时代&#xff0c;图像已成为我们生活中不可或缺的一部分。无论是网站设计、社交媒体分享还是文件传输&#xff0c;高质量的图片都扮演着重要的角色。但高质量往往意味着大文件体积&#xff0c;这可能会导致加载速度变慢或存储空间不…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

体制内打工人收藏!5款AI写作工具,助你变成单位笔杆子~

对于初入体制内职场的新手或是日常任务繁重、难以抽身撰写文件的同事们&#xff0c;别再让加班的夜晚成为常态&#xff01;现在&#xff0c;就让我揭秘几个高效公文写作宝库&#xff0c;它们能助你迅速掌握公文写作的精髓&#xff0c;海量素材信手拈来&#xff0c;更有快速成文…

8个高清视频素材网站,免费下载。

想要找到免费还能商用的视频素材&#xff0c;一定要收藏好这8个网站&#xff0c;高清、4K高质量&#xff0c;无水印&#xff0c;适合专业剪辑和自媒体伙伴。 1、菜鸟图库&#xff08;免费商用&#xff09; 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库网素材非常丰富&#x…

2024年AI写作工具:10款网站让你告别文章/材料创作困难!

随着AI科技的迅猛跃进&#xff0c;我们正步入一个前所未有的便捷时代&#xff0c;其广泛应用已渗透到生活的每个角落。笔者精心挑选了10款高效AI智能助手&#xff0c;借助这些强大工具&#xff0c;我们不仅能够显著提升工作效率&#xff0c;还能激发无限创意潜能&#xff0c;让…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Cloudreve云盘

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Cloudreve云盘 Cloudreve是一款开源的云存储管理系统&#xff0c;支持本机和第三方存储&#xff0c;提供用户管理、文件上传、下载、分享、在线预览等多种功能&#xff0c;适用于搭建个人和团队的私有云盘服务 …