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

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

  • 相关阅读:
    GaussDB-物理、逻辑备份 使用方法和[GAUSS-53403]解决办法
    如何在快应用中定义一个全局对象
    如何在latex中高亮文本
    智能客户端平台体系结构指南
    ros入门之一,发布者,订阅者的python文件创建以及最后的终端执行(含python文件代码)
    apt和dpkg的源码下载链接
    大模型日报2024-04-17
    数据分析师到底是做什么的?写Python或SQL语句?
    Linux命令
    SpringCloud之Nacos作为配置中心
  • 原文地址:https://blog.csdn.net/u012841414/article/details/134040065