如何使用C語(yǔ)言來(lái)編寫(xiě)MSP430的高質(zhì)量代碼

發(fā)布時(shí)間:2016-9-13 11:18    發(fā)布者:designapp
關(guān)鍵詞: C語(yǔ)言 , MSP430

微處理器一般用于特定環(huán)境和特定用途,出于成本、功耗和體積的考慮,一般都要求盡量節省使用資源,并且,由于微處理器硬件一般都不支持有符號數、浮點(diǎn)數的運算,且運算位有限,因此,分配變量時(shí)必須仔細。另外要說(shuō)明的是,速度和存儲器的消耗經(jīng)常是2個(gè)不可兼顧的目標,在多數情況下,編程者必須根據實(shí)際情況作出權衡和取舍。

需要注意的事項如下:

1) 通常在滿(mǎn)足運算需求的前提下,盡量選擇為變量定義字節少的數據類(lèi)型。

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

2) 盡量不用過(guò)長(cháng)的數據類(lèi)型,如long、long long和double

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

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

5) 盡量將變量分配為無(wú)符號數據類(lèi)型

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

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

8) 避免對局部變量使用 &取地址符。因為這樣會(huì )使編譯器無(wú)法把此變量放在CPU的寄存器中,而是放在RAM中,從而失去了優(yōu)化的機會(huì )

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

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

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

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

將變量聲明為volatile類(lèi)型,編譯器優(yōu)化時(shí)就不會(huì )移動(dòng)它,對它的訪(fǎng)問(wèn)不會(huì )被延遲。為保證對volatile的變量不被打斷,為此,可以在訪(fǎng)問(wèn)它的部分(即訪(fǎng)問(wèn)它的函數)前面加上__moniter的聲明
本文地址:http://selenalain.com/thread-173686-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页