日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

STM32 C/C++ uCOSII 函数调用return 无法返回或者函数无法正常反回上一层函数的问题

發(fā)布時間:2024/9/3 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 C/C++ uCOSII 函数调用return 无法返回或者函数无法正常反回上一层函数的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我這里說明的問題,一般會出現(xiàn)在UCOS系統(tǒng)上,如果是裸機應(yīng)該不怎么會出現(xiàn),只要程序不是太大,不是無休止的使用內(nèi)存。

我遇到的現(xiàn)象是,在某個任務(wù)運行中進行多層函數(shù)調(diào)用時在return時無法返回,這種情況一般都是因為堆棧過小的問題。一般涉及工程中兩個地方。

一個是任務(wù)堆棧設(shè)置那里,一個是總堆棧設(shè)置那里(stm32平臺一般是stm32xxxxx.s文件中),任務(wù)堆棧設(shè)置的位置每個工程可能都不一樣,自行尋找修改即可,總堆棧在stm32平臺中在下面代碼紅色所示的位置:

<span style="color:#ff0000;">Stack_Size EQU 0x00000D00</span>AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp; <h> Heap Configuration ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; </h>Heap_Size EQU 0x00000200AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit 把總堆棧和任務(wù)堆棧同時調(diào)大或者夠用的狀態(tài)無法返回的問題即可解決。也不要太大,免得浪費內(nèi)存。


還有一個問題,如果在函數(shù)內(nèi)部使用大的數(shù)組,如分配一個4K大小的數(shù)組,這樣是不行的,當然還是對有操作系統(tǒng)的來說,裸機也有可能會出問題,當然取決于設(shè)置的棧大小,這是我的理解,沒有做測試。

在操作系統(tǒng)中不要這么使用,如果是大的數(shù)組,那么盡量設(shè)置為全局的形式,免得程序莫名其妙的崩潰(我花了好長時間來尋找這個問題~~~~(>_<)~~~~)。
在使用UCOS這類操作系統(tǒng)時,對內(nèi)存的使用以及指針的使用要務(wù)必格外小心仔細,要不然出現(xiàn)了莫名其妙的問題,很難去定位尋找,因為是多任務(wù)運行,這句話有問題,但是引起這句有問題的地方在哪卻是未知。






總結(jié)

以上是生活随笔為你收集整理的STM32 C/C++ uCOSII 函数调用return 无法返回或者函数无法正常反回上一层函数的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。