<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430的高質(zhì)量代碼編寫

          MSP430的高質(zhì)量代碼編寫

          作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          1) 通常在滿足運(yùn)算需求的前提下,盡量選擇為變量定義字節(jié)少的數(shù)據(jù)類型。

          比如最常用的int和char,int是16位的,char是8位的,如果沒有必要,不要使用int,而且使用char也最好使用unsigned char。運(yùn)行時(shí),可以在變量窗口看到,使用類型為unsigned char的變量是16進(jìn)制的格式,而使用int的是十進(jìn)制格式,如果char沒有定義為unsigned,會出現(xiàn)負(fù)號,如果沒有必要的話,在430中是不需要負(fù)數(shù)的。

          本文引用地址:http://www.ex-cimer.com/article/201611/316342.htm

          2) 盡量不用過長的數(shù)據(jù)類型,如long、long long和double

          3) MSP430的C編譯器不支持位尋址,所以運(yùn)算中盡量減少位操作,對于只有“是”和“否”的變量,如果RAM容量允許,則可分配為unsigned char類型,可提高運(yùn)算速度。如果分配為某字節(jié)的某個(gè)位,可以減少存儲器的消耗,但是會降低運(yùn)算速度

          4) 避免使用浮點(diǎn)數(shù),盡量使用定點(diǎn)數(shù)進(jìn)行小數(shù)運(yùn)算。如果必須使用浮點(diǎn)數(shù),則盡量用32位的float,而不是64位的double

          5) 盡量將變量分配為無符號數(shù)據(jù)類型

          6) 對于指針變量,如果聲明后其值不再改變,則聲明為const類型,這樣編譯器編譯時(shí)能更好的優(yōu)化生成的代碼

          7) 盡可能的使用局部變量而非全局變量或者靜態(tài)變量(static)。這樣有利于編譯器編譯時(shí)更好的優(yōu)化生成的代碼

          8) 避免對局部變量使用 &取地址符。因?yàn)檫@樣會使編譯器無法把此變量放在CPU的寄存器中,而是放在RAM中,從而失去了優(yōu)化的機(jī)會

          9) 僅在模塊內(nèi)使用的變量聲明為static,有利于優(yōu)化代碼

          10) 如果堆??臻g有限,盡量減少函數(shù)調(diào)用的層次和遞歸調(diào)用

          11) 如果傳送參數(shù)過多,可將參數(shù)組成一個(gè)數(shù)組或者結(jié)構(gòu)體,然后用指針傳遞

          12) 某些變量在中斷程序和普通級別程序中都會被用到,所以必須加以保護(hù)。

          將變量聲明為volatile類型,編譯器優(yōu)化時(shí)就不會移動它,對它的訪問不會被延遲。為保證對volatile的變量不被打斷,為此,可以在訪問它的部分(即訪問它的函數(shù))前面加上__moniter的聲明


          關(guān)鍵詞: MSP430代碼編

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();