使用MSP430需要注意的問題總結(jié)
2. 要調(diào)用另一個文件中的函數(shù),要把這個函數(shù)文件放到當(dāng)前工程目錄下,并且在工程中添加此文件。
本文引用地址:http://www.ex-cimer.com/article/201611/316958.htm3. 命名中不能有-,比如:byq-ee會認(rèn)為是錯誤的,要用下劃線。
4. 用IAR軟件仿真時,可以加入變量,如果是查看I/O信息只需加入PXIN,PXOUT即可。
5. IAR在處理字符時,要注意,是字符處理結(jié)尾標(biāo)志,它和其他編輯軟件是不同的。比如我們常用字符處理會自動在結(jié)尾處加,但I(xiàn)AR有些是不加的,這就要十分注意。
6. 如果只用到LFX1的低速時鐘,9600bit/s傳輸?shù)脑挘邮諘霈F(xiàn)問題,原因是誤差太大,可以設(shè)置到4800以下。
7. 在寫FLASH時要注意其工作頻率在257K~476k之間,如果不是,則會出現(xiàn)錯誤。而且FLAGH只能寫入0,這樣就出現(xiàn)了必須先擦除在寫入的模式。
8. 當(dāng)IO口作為輸入時,要根據(jù)平時的狀態(tài)加電阻,平時為高時,加個上拉電阻,平時為低時加個下拉電阻以增加穩(wěn)定性。
9. 在FLASH寫時一定要關(guān)外部中斷。
10. MSP430一般是不要RC復(fù)位的,一般只要接個100K左右電阻就可以了,如果要加電容,它的大小要根據(jù)以下兩個標(biāo)準(zhǔn)選擇:1. 下載程序不會出現(xiàn)下載不了;2. 程序上電會能穩(wěn)定復(fù)位。
11. 用&表達(dá)式作為判斷時,不要忘記加括號。
12. 不要使用中斷嵌套。
同時,為了使用C語言來編寫MSP430的高質(zhì)量代碼需要注意。
微處理器一般用于特定環(huán)境和特定用途,出于成本、功耗和體積的考慮,一般都要求盡量節(jié)省使用資源。并且,由于微處理器硬件一般都不支持有符號數(shù)、浮點數(shù)的運算,且運算位有限,因此,分配變量時必須仔細(xì)。另外要說明的是,速度和存儲器的消耗經(jīng)常是2個不可兼顧的目標(biāo),在多數(shù)情況下,編程者必須根據(jù)實際情況作出權(quán)衡和取舍。
需要注意的事項如下:
1) 通常在滿足運算需求的前提下,盡量選擇為變量定義字節(jié)少的數(shù)據(jù)類型。
比如最常用的int和char,int是16位的,char是8位的,如果沒有必要, 不要使用int,而且使用char也最好使用unsigned char。運行時,可以在變量窗口看到,使用類型為unsigned char的變量是16進(jìn)制的格式,而使用int的是十進(jìn)制格式,如果char沒有定義為unsigned,會出現(xiàn)負(fù)號,如果沒有必要的話,在430中是不需要負(fù)數(shù)的。
2) 盡量不用過長的數(shù)據(jù)類型,如long、long long和double
3) MSP430的C編譯器不支持位尋址,所以運算中盡量減少位操作,對于只有“是”和“否”的變量,如果RAM容量允許,則可分配為unsigned char類型,可提高運算速度。如果分配為某字節(jié)的某個位,可以減少存儲器的消耗,但是會降低運算速度。
4) 避免使用浮點數(shù),盡量使用定點數(shù)進(jìn)行小數(shù)運算。如果必須使用浮點數(shù),則盡量用32位的float,而不是64位的double。
5) 盡量將變量分配為無符號數(shù)據(jù)類型。
6) 對于指針變量,如果聲明后其值不再改變,則聲明為const類型,這樣編譯器編譯時能更好的優(yōu)化生成的代碼。
7) 盡可能地使用局部變量而非全局變量或者靜態(tài)變量(static)。這樣有利于編譯器編譯時更好的優(yōu)化生成的代碼。
8) 避免對局部變量使用&取地址符。因為這樣會使編譯器無法把此變量放在CPU的寄存器中,而是放在RAM中,從而失去了優(yōu)化的機會。
9) 僅在模塊內(nèi)使用的變量聲明為static,有利于優(yōu)化代碼。
10) 如果堆棧空間有限,盡量減少函數(shù)調(diào)用的層次和遞歸調(diào)用。
11) 如果傳送參數(shù)過多,可將參數(shù)組成一個數(shù)組或者結(jié)構(gòu)體,然后用指針傳遞。
12) 某些變量在中斷程序和普通級別程序中都會被用到,所以必須加以保護(hù)。
將變量聲明為volatile類型,編譯器優(yōu)化時就不會移動它,對它的訪問不會被延遲。
為保證對volatile的變量不被打斷,為此,可以在訪問它的部分(即訪問它的函數(shù))前面加上__moniter的聲明。
評論