RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
文章目錄
- 一、前言
- 二、代碼
- 2.1、main.h
- 2.1、main.c
- 三、DEBUG
- 四、細節補充
- 4.1、使用靜態堆棧方式創建的線程只占用一點點RTX5上的內存
- 4.2、通過RTX RTOS窗口,可以觀察線程的細節。
- 4.3、不建議將控制塊定義為全局變量,應該由RTX動態分配。
一、前言
RTX5與其他RTOS一樣,創建線程的方式分別靜態堆棧與動態堆棧兩種。
今天先學習使用靜態堆棧方式創建RTX5線程,分別是LED線程與Start線程。LED線程用于翻轉兩個LED,Start線程用于創建其他線程,并printf一些信息出來。
靜態堆棧方式創建線程,線程的內存由用戶自己分配,但RTX5也要繼續為線程分配80bytes的內存。如果喜歡用靜態堆棧方式創建線程的話,可以將RTX5的Global Dynamic Memory size設置小一些,因為Global Dynamic Memory是用于動態堆棧方式,且RTX5默認將它設置32K啊。所以,如果只用靜態堆棧方式創建線程的話,必須將Global Dynamic Memory設小一些,將內存預留出來。
一定要多看官方手冊。官方手冊上對應的內容:
二、代碼
2.1、main.h
可以不包含 “rtx_os.h”,因為不需要使用控制塊方式創建線程。
2.1、main.c
至于,堆棧的類型為什么是uint64_t,官方有說明:
最后,編譯程序。
三、DEBUG
從Event Recorder的Debug Viewer看到Start線程正在運行。觀察板子,兩個LED也在閃爍。
四、細節補充
4.1、使用靜態堆棧方式創建的線程只占用一點點RTX5上的內存
靜態堆棧方式創建線程,相當于用戶自己為線程分配內存。雖然說靜態堆棧方式創建線程時,線程的內存由用戶自己分配,但是并不代表完全不需要RTX5為線程繼續分配內存。經過使用Event Recorder調試發現,靜態堆棧方式創建線程,RTX5也需要繼續為此線程分配80bytes內存。
4.2、通過RTX RTOS窗口,可以觀察線程的細節。
4.3、不建議將控制塊定義為全局變量,應該由RTX動態分配。
osThreadAttr_t結構體的成員cb_mem使用默認NULL,cb_size使用默認0。它們都使用默認,RTX5負責管理控制塊。
cb_mem與cb_size不使用默認值時,將無法在RTX RTOS上查看到線程的細節。
總結
以上是生活随笔為你收集整理的RTX5 | 线程管理01 - 创建线程(静态堆栈方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7卸载python2.7_win7
- 下一篇: Qt学习之Qt基础入门(下)