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


    参考资料:Nrf52832 freeOS系统移植_nrf5283操作系统-CSDN博客

    这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正。

    把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模式:

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

  • 相关阅读:
    C++入门基础知识(2)
    HTTP,HTTPS,WebSocket协议辨析
    WinForm实现多人聊天工具完整源码
    设计模式-状态模式
    借鸡下蛋:室内定位之基于众包采集的 WiFi 指纹地图
    (Note)卫星接收天线的朝向
    kubernetes日志收集 fluent-operator 动态索引名的实现
    前端系列——CSS
    当分布 非正态分布时,能否使用Pearson Correlation?
    二分查找示例2(寻找峰值)
  • 原文地址:https://blog.csdn.net/u012841414/article/details/134040065