標(biāo)題: 合泰單片機(jī)CMG的層數(shù)超過堆棧層數(shù),這是內(nèi)存不夠了的意思嗎? [打印本頁]

作者: 啊h啊    時(shí)間: 2021-7-20 19:45
標(biāo)題: 合泰單片機(jī)CMG的層數(shù)超過堆棧層數(shù),這是內(nèi)存不夠了的意思嗎?
碰到合泰單片機(jī)的問題,這是內(nèi)存不夠了的意思嗎

1.png (13.31 KB, 下載次數(shù): 30)

1.png

作者: Y_G_G    時(shí)間: 2021-7-20 23:58
合泰單片機(jī)是硬件堆棧,8051是軟件堆棧,兩者是不一樣的
硬件堆棧是用硬件來進(jìn)行堆棧操作的,它的層數(shù)是有限的,有的是四五層,有的是十多層
調(diào)用一次函數(shù)用一層,函數(shù)里面再調(diào)用一次其它函數(shù)就又用一層,這樣就用了兩層了(8051不需要在乎這個(gè)東西)
硬件堆棧就不一樣了,容易溢出
所以,合泰的C是不允許遞歸的,在中斷函數(shù)內(nèi)盡量碼代碼,而不是通過函數(shù)來處理,能寫代碼就不調(diào)用函數(shù)(這個(gè)......跟C唱反調(diào)了)
盡可能的多調(diào)用幾個(gè)函數(shù)來處理,而不是調(diào)用的函數(shù)中又其它函數(shù)
比如:應(yīng)該是這樣的:
display()
{
aa();
bb();
cc();
}

而不是:
display()
{
aa();      -------------   aa()函數(shù)里面包含了函數(shù)bb();和cc();
}    這樣使用的話就多用了幾層堆棧了





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1