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)。如下图:

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

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

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

“Third Parties” 可以根据自己喜好随便写名字。然后,

去掉文件..\..\..\..\..\..\..\components\libraries\timer\app_timer.c

..\..\..\..\..\..\..\components\libraries\scheduler\app_scheduler.c,如下图:

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

添加文件

..\..\..\..\..\..\components\softdevice\common\nrf_sdh_freertos.c,

..\..\..\..\..\..\..\components\libraries\timer\app_timer_freertos.c,入下图:

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

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

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

然后将宏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

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

3,再然后就是main函数的修改了,这个比较简单,只需要按照demo改就可以啦!

补充一点:上面的移植成功后,你的系统可以正常运行,打log你会发现,系统运行2分钟后会停止,这是怎么回事呢?这是因为,系统起来的时候 打开蓝牙广播,设置了一个广播的超时时间,超时时间到了之后

会调用系统API把系统设置到sleep模式:

nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

做系统设计的时候需要注意该问题。

上一篇:iOS.Animations.by.Tutorials.v2.0汉化(四)


下一篇:移除input在type="number"时的上下箭头