MSP430F5529 番外(三)一些問題解答及中斷系統(tǒng)說明
(3)MSP430F5529 不是自帶LCD Driver的,是通過SPI來控制外部的點(diǎn)陣液晶顯示的,并通過P7.6輸出PWM來控制液晶背光的。
但是由于,P7.6正好是TB0.4,即定時(shí)器TimerB0的4通道,因此使用TB0時(shí),極有可能會(huì)更改其CCR0的值。導(dǎo)致輸出PWM波周期改變了。其結(jié)果就是導(dǎo)致液晶屏屏幕變暗。
(4)對(duì)于430而言,存在各種各樣的中斷。中斷有時(shí)候確實(shí)很方便,但是對(duì)于中斷使用,我覺得應(yīng)該盡量少用尤其是中斷嵌套的情況,更應(yīng)該避免發(fā)生。因?yàn)槎嘀袛鄷r(shí),很可能出現(xiàn)一些難以控制和預(yù)料的意外。
當(dāng)同時(shí)有多個(gè)中斷來的時(shí)候才有優(yōu)先級(jí)的考慮(優(yōu)先級(jí)順序可查看下面向量表)。
有中斷響應(yīng)以后自動(dòng)關(guān)閉總中斷,這個(gè)時(shí)候即使來更高優(yōu)先級(jí)的中斷都不會(huì)響應(yīng)。
要中斷嵌套的話,就必須在中斷中打開總中斷。
實(shí)現(xiàn)中斷嵌套需要注意以下幾點(diǎn):
1)430默認(rèn)的是關(guān)閉中斷嵌套的,除非你在一個(gè)中斷程序中再次開總中斷EINT;
2)當(dāng)進(jìn)入中斷程序時(shí),只要不在中斷中再次開中斷,則總中斷是關(guān)閉的,此時(shí)來中斷不管是比當(dāng)前中斷的優(yōu)先級(jí)高還是低都不執(zhí)行;
3)若在中斷A中開了總中斷,則可以響應(yīng)后來的中斷B(不管B的優(yōu)先級(jí)比A高還是低),B執(zhí)行完再繼續(xù)執(zhí)行A。注意:進(jìn)入中斷B后總中斷同樣也會(huì)關(guān)閉,如果B中斷程序執(zhí)行時(shí)需響應(yīng)中斷C,則此時(shí)也要開總中斷,若不需響應(yīng)中斷,則不用開中斷,B執(zhí)行完后跳出中斷程序進(jìn)入A程序時(shí),總中斷會(huì)自動(dòng)打開;
4)若在中斷中開了總中斷,后來的中斷同時(shí)有多個(gè),則會(huì)按優(yōu)先級(jí)來執(zhí)行,即中斷優(yōu)先級(jí)只有在多個(gè)中斷同時(shí)到來時(shí)才起做用!中斷服務(wù)不執(zhí)行搶先原則。
5)對(duì)于單源中斷,只要響應(yīng)中斷,系統(tǒng)硬件自動(dòng)清中斷標(biāo)志位,對(duì)于TA/TB定時(shí)器的比較/捕獲中斷,只要訪問TAIV/TBIV,標(biāo)志位倍被自動(dòng)清除;
(5)如何將數(shù)字轉(zhuǎn)化為對(duì)應(yīng)的字符
大家以后經(jīng)常會(huì)碰到如何將自己得到的一個(gè)整形或者浮點(diǎn)型數(shù)據(jù)顯示到LCD上面去,LCD只能識(shí)別ASCII碼,不能直接識(shí)別數(shù)字。因此,就要用到將數(shù)字轉(zhuǎn)化為ASCII碼的。(一位一位轉(zhuǎn)化)
a) 直接按照ASCII碼的規(guī)則,把十進(jìn)制數(shù)加上0x30就得到了相應(yīng)的ASCII碼;
b) 建一個(gè)字符數(shù)組CharCode[10]=“0123456789”,
則CharCode[i],就是十進(jìn)制數(shù)字i對(duì)應(yīng)的ASCII碼;
c) C語言中stdlib.h頭文件中定義的有將數(shù)值轉(zhuǎn)化為字符串的函數(shù),可以調(diào)用,不過個(gè)人不推薦;
評(píng)論