日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

freeRTOS V10.0.1移植到STM32F407标准库 - 环境Keil5

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 freeRTOS V10.0.1移植到STM32F407标准库 - 环境Keil5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  最近因為工作需要用到FreeRTOS,其實開始本人內心是拒絕的因為自己只學習過UCOSIII還沒實際上過什么大又復雜的工程,但是誰讓FreeRTOS他是Free的呢公司成本考慮肯定是不會選擇USOS的,這個道理就像公司內心深處不想給你漲工資一樣。好了跑偏了言歸正傳,既然要用自然是要熟悉一下這個實時操作的內核的工作過程了,說道到里想起來自己當初學USOC時是把代碼幾乎進行了逐行的走讀,最后因為各種原因都沒能實際使用最后還是忘記了,所以我建議對于這一類的操作系統的學習還是重在API函數的用法學習上,不需要太對代碼集體實現細節進行研究,時間成本高有這個時間建議移植一個系統進行一些應用實踐是最有實際效果的。因此我現在就在踐行自己的經驗移植FreeRTOS到板子上學習,實際項目是用的STMF107系列的但是無奈手頭上暫時只有F407,其實都是一樣的,所以廢話不多說了開始移植實操。

查找資料

通過網上查閱各位大神牛人的博客最后選擇了如下兩個文檔:

1.FreeRTOS中文實用教程,這是英文原文下載地址http://www.FreeRTOS.org

2,STM32F429+FreeRTOS開發手冊,這是原子哥的開源電子網上都可以下來,最后再補充一下FreeRTOS源碼的下載地址https://jaist.dl.sourceforge.net/project/freertos/FreeRTOS/V10.0.1/FreeRTOSv10.0.1.exe

開始行動

1.找一個標準庫的實例這里我也用的是原子哥的F407的標準工程,然后解壓后的文件我們只用留下Source\portable如下的代碼因為我移植的工程是keil5的所以留下keil,但是這個文件夾其實沒什么用(對于我下載到的版本)。其中RVDS文件夾下也只留下的目標板相關的ARM_CM4F ?因為FreeRTOS這個版本已經支持F4的FPU

到此源碼處理完畢了接下來就是將源碼加入到標準工程中去,注意將SYSTEM下的delay.c從工程刪除。然后編譯出現如下錯誤

此時就要用到FreeRTOS的一些demo程序找到官方對于407的移植工程FreeRTOSv10.0.1\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK下的FreeRTOSConfig.h拷貝到工程中。在編譯又將看到如下錯誤

打開FreeRTOSConfig.h可以看到這樣一段代碼

#ifdef __ICCARM__#include <stdint.h>extern uint32_t SystemCoreClock; #endif

現在需要將其改成如下部分就可以去除這個錯誤

#if defined (__ICCARM__)||defined(__CC_ARM)||defined(__GNUC__)#include <stdint.h>extern uint32_t SystemCoreClock; #endif

然后再編譯就會發現新的錯誤:

Build target 'Template' compiling main.c... compiling croutine.c... compiling event_groups.c... compiling list.c... compiling queue.c... compiling stream_buffer.c... compiling tasks.c... compiling timers.c... compiling port.c... linking... ..\OBJ\Template.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by port.o and stm32f4xx_it.o). ..\OBJ\Template.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by port.o and stm32f4xx_it.o). ..\OBJ\Template.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by port.o and stm32f4xx_it.o). Not enough information to list image symbols. Not enough information to list the image map. Finished: 2 information, 0 warning and 3 error messages. "..\OBJ\Template.axf" - 3 Error(s), 0 Warning(s). Target not created

  提示三個函數有重復定義,其中SysTick_Handler再FreeRTOS中被重新定義成系統心跳處理中斷函數,PendSV_Handler,SVC_Handler也被在FreeRTOS中重新定義用于任務切換,所以需要注釋掉stm32F4xxx_it.c中的這三個中斷函數。接著編譯錯誤如下

linking... ..\OBJ\Template.axf: Error: L6218E: Undefined symbol pvPortMalloc (referred from event_groups.o). ..\OBJ\Template.axf: Error: L6218E: Undefined symbol vPortFree (referred from event_groups.o). ..\OBJ\Template.axf: Error: L6218E: Undefined symbol vApplicationIdleHook (referred from tasks.o). ..\OBJ\Template.axf: Error: L6218E: Undefined symbol vApplicationStackOverflowHook (referred from tasks.o). ..\OBJ\Template.axf: Error: L6218E: Undefined symbol vApplicationTickHook (referred from tasks.o). Not enough information to list image symbols. Finished: 1 information, 0 warning and 5 error messages. "..\OBJ\Template.axf" - 5 Error(s), 0 Warning(s). Target not created

  其中是先關HOOK鉤子函數未定義錯,在FreeRTOSConfig.h中改為如下

#define configUSE_PREEMPTION 1//調度器采用搶占式還是協程式 #define configUSE_IDLE_HOOK 0//空閑任務鉤子函數 #define configUSE_TICK_HOOK 0//時間片鉤子函數 #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) #define configMAX_PRIORITIES ( 5 )//最大任務優先級 #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 130 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 75 * 1024 ) ) #define configMAX_TASK_NAME_LEN ( 10 )//任務名最長 #define configUSE_TRACE_FACILITY 1 #define configUSE_16_BIT_TICKS 0//系統節拍計數器 #define configIDLE_SHOULD_YIELD 1//空閑任務是否會為同等優先級的任務讓出CPU使用權 #define configUSE_MUTEXES 1 #define configQUEUE_REGISTRY_SIZE 8 #define configCHECK_FOR_STACK_OVERFLOW 0//堆棧溢出檢測 #define configUSE_RECURSIVE_MUTEXES 1//遞歸互斥信號量 #define configUSE_MALLOC_FAILED_HOOK 0//內存分配失敗鉤子函數 #define configUSE_APPLICATION_TASK_TAG 0 #define configUSE_COUNTING_SEMAPHORES 1 #define configGENERATE_RUN_TIME_STATS 0//運行時間統計功能

在運行編譯錯誤如下

linking... ..\OBJ\Template.axf: Error: L6218E: Undefined symbol pvPortMalloc (referred from event_groups.o). ..\OBJ\Template.axf: Error: L6218E: Undefined symbol vPortFree (referred from event_groups.o). Not enough information to list image symbols. Finished: 1 information, 0 warning and 2 error messages. "..\OBJ\Template.axf" - 2 Error(s), 0 Warning(s). Target not created

  這一部分是我前面忘記加入內存管理函數文件導致的,在\FreeRTOSv10.0.1\FreeRTOS\Source\portable\MemMang目錄下一共有5個內存管理的點C文件

在這里我們選擇4結尾的管理方式,其中具體各個文件的管理方法是什么暫時不求甚解。將heap_4.c加入到工程。編譯

Build target 'Template' compiling heap_4.c... linking... Program Size: Code=19344 RO-data=424 RW-data=160 ZI-data=78936 FromELF: creating hex file... "..\OBJ\Template.axf" - 0 Error(s), 0 Warning(s).

  至此移植完成。具體配置后面再進行學習。https://github.com/Dazzingdusk/freeRTOS這里有我自己移植成功后,自己寫的一消息對列的代碼,其中驅動部分使用的是原子哥的例子中的代碼。

?

轉載于:https://www.cnblogs.com/w-smile/p/9313171.html

總結

以上是生活随笔為你收集整理的freeRTOS V10.0.1移植到STM32F407标准库 - 环境Keil5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品精品久久久 | 久久久久久成人精品 | 男人天堂黄色 | 欧美成人午夜精品免费 | 色射综合 | 国产高清精品在线 | 91丨porny丨尤物| 五月婷婷综合在线 | 在线免费av网址 | 色干综合 | 日本成人一二三区 | av色婷婷 | 少妇一级淫免费播放 | 天天干天天干天天干天天 | 亚洲精品69| 天堂在线中文资源 | 日日撸夜夜撸 | 国产高清自拍视频 | 97在线影院 | 国产精品jizz视频 | 久久受| 99热精品国产| 少妇精品久久久久www | 成人99视频| 禁断介护av | tube极品少妇videos | 婷婷国产视频 | 啪啪资源 | 9999免费视频 | 97超碰碰碰 | 狠操av | 亚洲福利专区 | 夜间福利在线 | 男裸体无遮挡网站 | 欧美大片aaa | 黄色成年人视频 | 亚洲88av| 噼里啪啦国语版在线观看 | 欧美人妻精品一区二区免费看 | 少妇一级淫免费播放 | 成人av中文解说水果派 | 99久久精品免费看国产免费软件 | 丁香六月啪啪 | 日本 片 成人 在线 九色麻豆 | 欧美麻豆 | 无码久久精品国产亚洲av影片 | 韩日av | 欧美日韩精品在线 | 黄视频在线观看免费 | 91波多野结衣 | 宅男午夜在线 | 成年人视频在线免费看 | wwwxxxx国产 | 欧美乱妇狂野欧美在线视频 | 怡红院男人的天堂 | 久久精品在线免费观看 | 午夜影院久久久 | 久久激情影院 | 91网站视频在线观看 | 在线中文字幕亚洲 | 久久五月婷 | 欧美色图亚洲自拍 | 韩国禁欲系高级感电影 | 色88久久久久高潮综合影院 | av射进来| 日日拍夜夜拍 | 国产成人a∨ | xxxxx亚洲| 欧美一区二区三区久久久 | 禁漫天堂下载18 | 欧美精品综合 | 精品福利一区二区 | 欧美 日韩 国产一区 | 在线成人福利 | 污污的视频在线免费观看 | 国产特黄级aaaaa片免 | 国产美女精品在线 | 国产精品毛片一区 | 久久久久91 | 少妇第一次交换又紧又爽 | 久久成人人人人精品欧 | 岛国片在线免费观看 | 调教一区 | 日本久久影视 | 亚洲一区欧洲二区 | 国产内射合集颜射 | 爱的天堂 | 午夜综合网 | 国产经典久久久 | 激情视频免费观看 | 国产精品国产一区二区三区四区 | 少妇精品高潮欲妇又嫩中文字幕 | 国产精品作爱 | 人妻久久一区二区 | 青青伊人精品 | 欧美精品三级 | 欧美日韩免费一区 | 一区=区三区乱码 | 久久精彩免费视频 |