430的啟動(dòng),I/O中斷
感言:看了這一集MSP430的講解之后,我才知道m(xù)sp430真的和arm7沒(méi)什么區(qū)別了,可能在某些功能上要比arm7要優(yōu)秀
1:430的系統(tǒng)復(fù)位和初始化初始化
430的系統(tǒng)復(fù)位有兩個(gè)來(lái)源
1:POR上電復(fù)位,他有3個(gè)來(lái)源可以是給器件上電,發(fā)現(xiàn)電壓不穩(wěn)定,給復(fù)位電路一個(gè)復(fù)位信號(hào)都可以導(dǎo)致產(chǎn)生一個(gè)復(fù)位信號(hào)
2:PUC上電清除,他也有4個(gè)來(lái)源,可以是產(chǎn)生了一個(gè)POR的中斷,可以是看門狗定時(shí)器的溢出,也可以是看門狗的密匙出現(xiàn)錯(cuò)誤,還可以是flash讀寫錯(cuò)誤
在430單片機(jī)上電來(lái)一個(gè)復(fù)位信號(hào),初始化內(nèi)部寄存器,保證cpu的正常工作,同時(shí)pc指向oxffe,sp的話指向堆棧頂部,430有一個(gè)很獨(dú)特的地方,就是看門狗是默認(rèn)開啟的
430的中斷分為3類:系統(tǒng)復(fù)位,非可屏蔽中斷,可屏蔽中斷
1:系統(tǒng)復(fù)位指的是POR和PUC中斷
2:非可屏蔽中斷,就是狀態(tài)寄存器控制不了,有情況產(chǎn)生,立即產(chǎn)生一個(gè)中斷,意外情況包括:片外振蕩器失效,對(duì)flash空間的錯(cuò)誤訪問(wèn)等等
3:可屏蔽中斷,必須要在狀態(tài)寄存器上開總中斷才能控制
430的中斷響應(yīng):(需要六個(gè)機(jī)器周期)
步驟如下:1:執(zhí)行完當(dāng)前pc指向的語(yǔ)句
2:取出下一條的語(yǔ)句的地址,還有狀態(tài)寄存器的值,壓入堆棧
3:通過(guò)仲裁邏輯判斷中斷的優(yōu)先級(jí)別
4:執(zhí)行中斷服務(wù)程序(注意的是,對(duì)于單元的中斷,中斷的標(biāo)志位會(huì)自動(dòng)清楚,比如串口中斷,但是對(duì)于多元的中斷,比如POR和PUC中斷,就必須由用戶手動(dòng)清除
5:取回堆棧中的地址,還有狀態(tài)寄存器的值,繼續(xù)執(zhí)行原始程序
430的通用I/O也很有意思
它具有6組通用的I/O,但是和其他的單片機(jī)不同,它的I/O的方向是默認(rèn)的是輸入方向,其中中功能達(dá)到了空前的數(shù)量,P1和P2都可以作為外部中斷,所以中斷的個(gè)數(shù)也有16個(gè),430的中斷只能夠是邊沿跳變觸發(fā),不能是電平觸發(fā),用戶可以自己設(shè)置是上升沿還是下降沿觸發(fā)中斷
由于I/O的管腳是默認(rèn)輸入的,因此,要對(duì)其進(jìn)行設(shè)置,這又涉及了寄存器的操作,過(guò)程詳細(xì)的看datasheet