文章目录

  • 现象
  • 原因分析
  • 解决方法

现象

在我们使用Nordic的nrf5_SDK进行开发时,如果要使用freeRTOS,一般会从例子中的examples\ble_peripheral\ble_app_hrs_freertos开始。

在宏定义中NRF_SDH_DISPATCH_MODEL可以选择三种:

// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT
// <1=> NRF_SDH_DISPATCH_MODEL_APPSH
// <2=> NRF_SDH_DISPATCH_MODEL_POLLING

如果我们不更改,按照默认的设置NRF_SDH_DISPATCH_MODEL_POLLING 则可以接着往下开发。
如果我们将其更改为NRF_SDH_DISPATCH_MODEL_POLLING 后,就会提示Symbol SWI2_EGU2_IRQHandler multiply defined的错误。

// <h> Dispatch model // <i> This setting configures how Stack events are dispatched to the application.
//==========================================================
// <o> NRF_SDH_DISPATCH_MODEL// <i> NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context.
// <i> NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler.
// <i> NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually.
// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT
// <1=> NRF_SDH_DISPATCH_MODEL_APPSH
// <2=> NRF_SDH_DISPATCH_MODEL_POLLING #ifndef NRF_SDH_DISPATCH_MODEL
#define NRF_SDH_DISPATCH_MODEL 0
#endif// </h>
.\_build\nrf52832_xxaa.axf: Error: L6200E: Symbol SWI2_EGU2_IRQHandler multiply defined (by nrf_sdh_freertos.o and nrf_sdh.o).
  • keil编译
  • GCC编译

原因分析

实际上SWI2_EGU2_IRQHandler是SD_EVT_IRQHandler 经过多次重定义的原始值。
所以,重定义的是void SD_EVT_IRQHandler(void)这个函数。

解决方法

注释掉其中的一个void SD_EVT_IRQHandler(void)即可。

因为这个回调最终都是调用的nrf_sdh_evts_poll();,所以保留一个即可。
我的改法如下:
加入判断FREERTOS开关的一个宏定义来决定是否使用nrf_sdh.c里的SD_EVT_IRQHandler。

#if (NRF_SDH_DISPATCH_MODEL == NRF_SDH_DISPATCH_MODEL_INTERRUPT)
#if !defined(FREERTOS) // 在不使用freeRTOS时开启
void SD_EVT_IRQHandler(void)
{nrf_sdh_evts_poll();
}
#endif

【填坑指南】[Nordic] SWI2_EGU2_IRQHandler multiply defined相关推荐

  1. 开发工具总结(4)之Android Studio3.0填坑指南

    序言 Android Studio 3.0 上篇讲了: 全面总结Android Studio2.X的填坑指南 这篇讲一下AS3.0的坑.. 作为这个世界上走在最前沿的生物"猿",怎 ...

  2. Android Studio 填坑指南

    前几天发布了一篇名为<Android Studio 安装.配置及第一个程序演示>的博文,有不少童鞋都认真阅读过并照步骤一步一步操作了一遍,有滴如期成功地装好了,然鹅有滴反映说这不对呀,为森 ...

  3. 第二篇:salt-api使用填坑指南

    前言 salt-api在使用时,有些坑欲哭无泪,一路趟雷过后,总结了一趟salt-pai使用填坑指南,保君一路畅通. salt-api 安装 #本文的安装版本 2018.3.2-1.el6 yum i ...

  4. alert点击确定后跳转_公众号/h5 跳转到小程序填坑指南

    公众号/h5 跳转到小程序填坑指南 本文介绍的是使用微信开放标签 wx-open-launch-weapp 实现微信浏览器内网页跳转到任意合法合规的小程序里,官方要求微信版本为:7.0.12 及以上, ...

  5. 开发工具总结(2)之全面总结Android Studio2.X的填坑指南

    前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗 ...

  6. KKBOX音乐——数据分析,用户研究与填坑指南

    KKBOX音乐--数据分析,用户研究与填坑指南 导语 1 数据来源 2 数据处理 2.1 录入数据 2.2 数据类型 3 探索性分析 3.1 MySQL+Excel 3.1.1 每年3月最先注册的前1 ...

  7. Redmine3.3.3 搭建与不完全填坑指南

    为什么80%的码农都做不了架构师?>>>    Redmine3.3.3 搭建与不完全填坑指南 [TOC] 概要 Redmine3.3.3 搭建.不完全填坑指南.不联网安装.Wind ...

  8. Symbol SWI2_EGU2_IRQHandler multiply defined(by nrf_sdh_freertos.o and nrf_sdh.o)

    现象描述 ._build\nrf52840_xxaa.axf: Error: L6200E: Symbol SWI2_EGU2_IRQHandler multiply defined (by nrf_ ...

  9. NW.JS填坑指南(解决Flash插件、视频播放等故障)

    目录 NW.JS填坑指南 NW.js是什么? NW.js 和 electron的选择 开发工具IDE 下载nwjs 版本信息 简单的实例 改图标 改合成exe的图标 改图标第二种方案是 播放不了视频 ...

最新文章

  1. MemoryStream的一些问题
  2. 提升对前端的认知,不得不了解Web API的DOM和BOM
  3. c语言strTrimed函数用法介绍,c语言对字符串实现高效trim函数
  4. 启用RHEL5.6的VNC,使Windows可图形远程控制
  5. Windows下配置安装Git(一)
  6. 【历史】衣米魔兽怀旧服发展历史事件以及衣米魔兽重要玩家传记
  7. python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版v3.5.803 安卓版-腾牛安卓网...
  8. 图片怎么存储到数据库里
  9. epson机器人编程 范例_Epson机械手简单实例编程
  10. 《windows 程序设计》读书笔记 三
  11. html打印预览空白,win7系统下使用IE浏览器预览打印页面时显示页面空白如何解决...
  12. 文具行业APS解决方案
  13. 用p5.js绘制创意自画像
  14. VC++内存泄漏检测方法(5):使用强大的Windbg工具,重点是Symbols Path设置
  15. 构建初级前端页面重构开发环境
  16. centos8修改系统语言为中文
  17. 震屏效果java_CocosCreator 实现手机震动效果
  18. python怎么算阶乘_Python 计算阶乘的算法
  19. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据
  20. 利用jTessBoxEditor工具进行Tesseract3.02.02样本训练

热门文章

  1. python的txt、csv、ini、xml、excel文件相关操作
  2. 根据模板导出word,复合格式表格生成、可变列表格生成
  3. 机器学习第七章之K近邻算法
  4. 基于XR Interaction ToolKit与PUN实现VR多人协同功能
  5. flex4 遮罩小示例-给图片添加相框(画框)
  6. 初学C语言实现简易计算器
  7. 子句逻辑与归结:理论背景
  8. 局域网如何防止未知的终端接入
  9. 【youcans 的 OpenCV 例程200篇】172.SLIC 超像素区域分割算法比较
  10. 深入解读腾讯云微搭低代码的技术架构