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

做系統設計的時候需要注意該問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM