nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植
参考资料:https://blog.csdn.net/u010860832/article/details/86235993
这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正。
把FreeRTOS移植到 nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart工程,在keil上移植。本身SDK中有一个工程可以做参考:nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_hrs_freertos。
1,把nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_hrs_freertos下面的config文件夹拷贝到nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart\pca10040\s132\arm5_no_packs目录下(其实这里可以拷贝任何目录下,只需要配置好keil的编译应用目录就OK)。如下图:

2,把FreeRTOS相关的C文件添加到工程,如下图

“Third Parties” 可以根据自己喜好随便写名字。然后,
去掉文件..\..\..\..\..\..\..\components\libraries\timer\app_timer.c
..\..\..\..\..\..\..\components\libraries\scheduler\app_scheduler.c,如下图:

添加文件
..\..\..\..\..\..\components\softdevice\common\nrf_sdh_freertos.c,
..\..\..\..\..\..\..\components\libraries\timer\app_timer_freertos.c,入下图:


..\..\..\..\..\..\..\components\libraries\hardfault\nrf52\handler\hardfault_handler_keil.c 这个文件可加可不加,我没有加也没有出现问题,不知道后续开发是否会遇到问题,遇到问题再来更新(欢迎大家批评指正)

然后将宏NRF_SDH_DISPATCH_MODEL 由0改为2(sdk_config.h),configUSE_TIMERS宏由0改为1(freeRTOSConfig.h)
然后再将需要的对应的头文件添加上
..\..\..\..\..\..\..\external\freertos\source\include
..\..\..\..\..\..\..\external\freertos\config
..\..\..\..\..\..\..\external\freertos\portable\ARM\nrf52
..\..\..\..\..\..\..\external\freertos\portable\CMSIS\nrf52

3,再然后就是main函数的修改了,这个比较简单,只需要按照demo改就可以啦!
补充一点:上面的移植成功后,你的系统可以正常运行,打log你会发现,系统运行2分钟后会停止,这是怎么回事呢?这是因为,系统起来的时候 打开蓝牙广播,设置了一个广播的超时时间,超时时间到了之后
会调用系统API把系统设置到sleep模式:

做系统设计的时候需要注意该问题。
nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植的更多相关文章
- 基于IAR平台FreeRTOS移植
开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...
- Java 基于ArcFace人脸识别2.0 服务端Demo
源代码传送:https://github.com/itboyst/ArcSoftFaceDemo 开发环境准备: ###开发使用到的软件和工具: Jdk8.mysql5.7.libarcsoft_fa ...
- 超详细的FreeRTOS移植全教程——基于srm32
### 准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包.这里我们提供两个下载链接: > 一个是官网:http://www.freertos.org/ > 另外一个是代码托 ...
- [js高手之路]Vue2.0基于vue-cli+webpack Vuex用法详解
在这之前,我已经分享过组件与组件的通信机制以及父子组件之间的通信机制,而我们的vuex就是为了解决组件通信问题的 vuex是什么东东呢? 组件通信的本质其实就是在组件之间传递数据或组件的状态(这里将数 ...
- Net Core2.0 基于QuartzNet任务管理系统
Net Core2.0 基于QuartzNet任务管理系统 Quartz.NET官网地址:https://www.quartz-scheduler.net/ Quartz.NET文档地址:https: ...
- 1、FreeRTOS移植
1.FreeRTOS目录结构 FreeRTOS FreeRTOS简略目录如下: ├─FreeRTOS │ ├─Demo // 各种开发工具的完整Demo,开发者可以方便的以此搭建出自己的项目,甚至直接 ...
- 基于STM32的uCGUI移植和优化
基于STM32的uCGUI移植和优化 首先在开始这个说明之前,要简要说明下具体的环境: 编译工具:MDK4.20 开发板:安富莱v2版开发板 调试器:JLink v8盗版 移植篇 相信大家有移植经验 ...
- 基于Linux的kfifo移植到STM32(支持os的互斥访问)
基于Linux的kfifo移植到STM32(支持os的互斥访问) 关于kfifo kfifo是内核里面的一个First In First Out数据结构,它采用环形循环队列的数据结构来实现:它提供一个 ...
- 基于FPGA的DW8051移植(三)
总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html 基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ...
随机推荐
- C#下载Url文件到本地
protected void Page_Load(object sender, EventArgs e) { string filePath = Request.Params["FilePa ...
- WebAPI常见的鉴权方法,及其适用范围
在谈这个问题之前,我们先来说说在WebAPI中保障接口请求合法性的常见办法: API Key + API Secret cookie-session认证 OAuth JWT 当然还有很多其它的,比如 ...
- Lucene学习笔记:基础
Lucence是Apache的一个全文检索引擎工具包.可以将采集的数据存储到索引库中,然后在根据查询条件从索引库中取出结果.索引库可以存在内存中或者存在硬盘上. 本文主要是参考了这篇博客进行学习的,原 ...
- 使用Python完成排序(快排法、归并法)
class Sort(object): def quick_sort(self, ls): self.quick_sort_helper(ls, 0, len(ls) - 1) return ls d ...
- matplotlib中color可用的颜色
http://stackoverflow.com/questions/22408237/named-colors-in-matplotlib 参考网址给出了matplotlib中color可用的颜色: ...
- C#学习笔记14——TRACE、DEBUG和TRACESOURCE的使用以及日志设计
Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空间 System.Diagnostics 包含用于跟踪执行流程的 Trace.Debug 和 ...
- web端常见测试点
由于web端应用于用户直接相关,又通常需要承受长时间的大量操作,因此web项目的功能和性能都必须经过可靠的验证.web端测试常见的有界面测试.功能测试.性能测试.可用性(接口)测试.兼容性测试.安全性 ...
- linux crontab 命令,最小的执行时间是一分钟,如需要在小于一分钟内重复执行
编写shell脚本实现 crontab.sh #!/bin/bash step=2 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $ ...
- 洛谷[LnOI2019]长脖子鹿省选模拟赛 简要题解
传送门 听说比赛的时候T4T4T4标程锅了??? WTF换我时间我要写T3啊 于是在T4T4T4调半天无果的情况下260pts260pts260pts收场真的是tcltcltcl. T1 快速多项式变 ...
- 关于Asp.net事件,如何在触发子控件的事件时,同步触发父页面的事件
对页面引用自定义控件后,通过绑定自定义事件,页面绑定子控件的事件,在子控件做了某些修改动作后,如何同步操作父页面的方法:下面我煮了个栗子,同学们可以来尝一尝试一试 a.aspx 引用 UserCont ...