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

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

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

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

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

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

例:

count ++;

if (count == 128) count = 0;

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

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

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

假如count是個long型的或即使是char型的.

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

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

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

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

count ++;

count &= 0x7f;

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

但也要這樣改為好:

count ++;

if (count >= 128) {

/*-----在此處理其他事件或任務*/

  count = 0;

}

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

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

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

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

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




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