性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

MCU編寫程序要注重效率和穩(wěn)定及可靠性

http://blog.21ic.com/more.asp?name=hotpower&id=31019

HotPower 發(fā)表于 2006-10-22 22:27 侃單片機(jī) ←返回版面   舉報(bào)該貼

最近看了很多的研究生編的程序很是"難受"~~~

例:

count ++;

if (count == 128) count = 0;

粗看上去沒任何問題.但在MCU/DSP/ARM的編程中就大不相同了.

這在PC中沒問題,但在工業(yè)現(xiàn)場問題就來了.

大家都知道可能在出現(xiàn)干擾時(shí),RAM是會"被改寫"的.

假如count是個(gè)long型的或即使是char型的.

令count初值=0,那么在count在128前有可能被改寫為大于128的值.

這樣將會帶來不可預(yù)測的后果,最簡單的就是數(shù)組的溢出或延時(shí)控制設(shè)備不能被及時(shí)關(guān)閉...

再者,在有流水線的CPU中,jmp/call等改變PC的操作都會破壞流水線,這樣就降低了程序運(yùn)行的效率.

故應(yīng)該這樣改為好(防止數(shù)組的溢出時(shí)常用):

count ++;

count &= 0x7f;

若在滿足條件且需處理其他事件或任務(wù)時(shí),則必須使用這樣的語句.

但也要這樣改為好:

count ++;

if (count >= 128) {

/*-----在此處理其他事件或任務(wù)*/

  count = 0;

}

注意這里將==改為>=了.

改動雖小,但可靠性提高了很多.特別在防止數(shù)組的溢出時(shí)很有必要.

像ARM/DSP經(jīng)常在RAM中運(yùn)行,代碼和數(shù)據(jù)是"粘連"的,RAM"數(shù)據(jù)"的毀壞難道

RAM"程序"能有好日子過嗎???

所以要從"小事"做起,不要以后老"跪求bug"~~~




http://hotpower.21ic.org
全部回復(fù)(3)
正序查看
倒序查看
wayhe
LV.4
2
2006-10-26 00:12
好貼,頂一下.
0
回復(fù)
hotpower
LV.5
3
2006-10-26 00:20
@wayhe
好貼,頂一下.
0
回復(fù)
金狐貍
LV.3
4
2006-11-14 20:52
@hotpower
哈哈~~~這里真不是學(xué)習(xí)MCU的地方~~~http://www.daxia.com/bbs/search2.asp?word=hotpower&sele=2http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2302245
支持一下,講的很不錯(cuò)的,學(xué)習(xí)了.
0
回復(fù)
發(fā)