学习使用Free RTOS ,移植最新的STM32 v3.5固件库
生活随笔
收集整理的這篇文章主要介紹了
学习使用Free RTOS ,移植最新的STM32 v3.5固件库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? 最近拿到了一塊萬利的EK-STM32F的學習板,打算先用它來熟悉下STM32的編程環境,不過在這過程中和一個同事聊的時候覺得如果只調用STM32的庫寫程序,可能在芯片資源的利用上面可能就會差一點,在這么高的主頻下,一些硬延時的函數對資源會造成比較大的損失,所以一般的編程方式還是有不少局限性的,所以我就覺得有必要去使用小型的嵌入式RTOS來實現系統的資源管理。
? ? 以前看過一些RTT的資料,可是感覺比較復雜,如果直接使用的話可能要花的時間比較長,雖然一直什么都做了,可是還是有點復雜的感覺,uCos嗎商業使用限制比較大,雖然資源比較多,可是很多組件都是暫時用不到的。最后找到了Free RTOS,一個商用免費的系統,占用的ROM/RAM資源比較小,且對stm32都有現成的例子支持,對于一般的使用還是夠用了。
? ? 下面要看如何移到EK-STM32F板子上使用了,我看了下里面自帶的例子,發現其STM32使用的庫還是最老的版本庫,現在都出到lib v3.5了,那么我用肯定要使用最新的。剛開始直接在例子里替換了最新的庫,結果報了幾百個警報錯誤,直接讓我奔潰,那么只能不這么弄了,不再使用原來的例子直接改了,那就一步步來。
我開始自己建了一個項目,先將新庫的結構給搭建好: 建好之后試了一個簡單的例子,確定該庫能正常使用,之后在開始添加Free Rtos文件并對一些文件進行修改,以確保能正常運行FREE RTOS: 其實FREE RTOS很多文件都是系統無關的,這了我只修改了幾個中斷文件的入口以確保系統正式運行,下面三個中斷函數就是RTOS帶的函數,修改就好了,剛開始我是修改啟動文件里的跳轉函數,結果發現報了HardFault錯誤,現在這個才是正確的: 1 DCD SVC_Handler ; SVCall Handler 2 DCD PendSV_Handler ; PendSV Handler 3 DCD SysTick_Handler ; SysTick Handler 我找了下官方對這幾個函數的解釋,就能看出這幾個中斷就是給OS使用的,看來Cortex-M3是對OS有優化的: SVCall A supervisor call (SVC) is an exception that is triggered by the SVC instruction. In an OS environment, applications can use SVC instructions to access OS kernel functions and device drivers.PendSV PendSV is an interrupt-driven request for system-level service. In an OS environment, use PendSV for context switching when no other exception is active.SysTick A SysTick exception is an exception the system timer generates when it reaches zero. Software can also generate a SysTick exception. In an OS environment, the processor can use this exception as system tick 改完之后我試了一個簡單的LED任務,延時1s亮滅,下載,發現沒什么問題,說明功能暫時OK了,下面就學習具體的RTOS操作和芯片功能設置了。轉載于:https://www.cnblogs.com/nixianmin/p/3166811.html
總結
以上是生活随笔為你收集整理的学习使用Free RTOS ,移植最新的STM32 v3.5固件库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见的网页技巧(转)
- 下一篇: 使用JavaScript调用aspx后台