STM32H743+CubeMX-移植ThreadX
文章目錄
- 一、前言
- 二、STM32CubeMX
- 2.1、新建工程
- 2.2、配置RCC
- 2.3、配置Clock Configuration
- 2.4、配置Debug方式
- 2.5、使能CPU ICache與DCache
- 2.6、下載ThreadX的內核
- 三、ThreadX
- 3.1、Mode
- 3.2、修改裸機的Timebase Source
- 3.3、配置ThreadX的User setting
- 3.4、修改ThreadX的堆棧
- 3.5、配置GPIO
- 3.6、修改Project Manager
- 四、代碼
- 4.1、 main.c
- 4.2、創建第一個ThreadX線程
- 4.2.1、app_azure_rtos.h
- 4.2.2、app_azure_rtos.c
- 4.2.3、返回到app_azure_rtos.h修改一下
- 五、編譯,燒錄代碼
- 5.1、編譯
- 5.2、燒錄代碼
一、前言
令人激動的是,STM32Cube ecosystem迎來又一波的更新,名字是X-CUBE-AZROTS-H7。這個項目重大意義是從STM32CubeMX移植ThreadX,也可以移植rt-thread。目前使用STM32CubeMX移植ThreadX只支持H7系列的單片機,其他系列可能還需要等等。
視頻教程:https://v.qq.com/x/page/c3232e9q80c.html
值得注意的是,我在移植的過程中發現,單獨使用STM32CubeMX移植會有BUG,無法進入Mode界面配置ThreadX。但是,在STM32CubeIDE上使用STM32CubeMX的話,沒有出現這個問題。
二、STM32CubeMX
2.1、新建工程
2.2、配置RCC
2.3、配置Clock Configuration
2.4、配置Debug方式
2.5、使能CPU ICache與DCache
2.6、下載ThreadX的內核
如上圖所示,配置AZURE_RTOS_Application與ThreadX:
- HW_Profile選擇Custom_Board
因為STM32H743IIT6并不是stm32 ecosystem評估板的芯片,所以只能選擇Custom_Board了,意思是:自定義的板子 - Application選擇azure_rtos_app
沒有其他選擇了。 - 勾上ThreadX/Core
內核,必須要用啊。 - 勾上ThreadX/ TraceX support
RTOS的強大調試工具,調試的時候使用的。
接著,就可以按下界面右下角的ok,然后會彈回到原來的配置界面,然后左側的選項欄里增加一個SoftWare Packs。
三、ThreadX
3.1、Mode
3.2、修改裸機的Timebase Source
這一步非常重要,裸機的Time Base Source改為TIM1,是因為Systick被RTOS占用了。總的來說,雖然移植了RTOS,但是裸機系統也需要時鐘源。這個跟移植FreeRTOS時是一樣的。
3.3、配置ThreadX的User setting
- TX_TIMER_TICKS_PER_SECOND改為1000
這個TIMER在UCOSIII與FreeRTOS都有,是系統調度的頻率,改為1000的意思是每秒進行1000次的調度,即調度的頻率是1000Hz,大部分的RTOS通常都配置1000。
其他配置暫時保持默認,至于每一個配置的意義,在ThreadX的官網有詳細的介紹。
官網網址:https://docs.microsoft.com/en-us/azure/rtos/threadx/chapter2
3.4、修改ThreadX的堆棧
至于應用程序的堆棧配置多大,這個需要看MCU的型號。STM32H743IIT6有1MB的RAM空間,分配10KB就相當于1/100的RAM空間。
3.5、配置GPIO
配置開發板的LED引腳的GPIO,用于驗證ThreadX的線程有沒有跑起來。
3.6、修改Project Manager
生成代碼之前,修改生成代碼的方式。
四、代碼
4.1、 main.c
從main.c可以看到ThreadX初始化的相關函數,證明TThreadX系統移植成功??梢跃幾g一下代碼,反正我是沒有報錯與告警。
4.2、創建第一個ThreadX線程
4.2.1、app_azure_rtos.h
4.2.2、app_azure_rtos.c
4.2.3、返回到app_azure_rtos.h修改一下
五、編譯,燒錄代碼
5.1、編譯
還是沒有報錯與警告。
5.2、燒錄代碼
完成,創建一個線程。。。。。
總結
以上是生活随笔為你收集整理的STM32H743+CubeMX-移植ThreadX的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BCrypt加密怎么存入数据库_dns污
- 下一篇: CAN总线技术 | 物理层01 - CA