MSP430 使用一些理解

2021-07-16 12:01:10 字數 2235 閱讀 8620

1.中斷巢狀,優先順序 

430總中斷的控制位是狀態暫存器內的gie位(該位在sr暫存器內),該位在復位狀態下,所有的可遮蔽中斷都不會發生響應。可遮蔽中斷又分為單中斷源和多中斷源的。單中斷源的一般響應了中斷服務程式中斷標誌位就自動清零,而多中斷源的則要求查詢某個暫存器後中斷標誌位才會清零。由於大多數人接觸的第一款微控制器通常是51,51微控制器cpu在響應低優先順序的中斷程式過程中若有更高優先順序的中斷發生,微控制器就會去執行高優先順序,這個過程已經產生了中斷巢狀。而430微控制器則不同,如果在響應低優先順序中斷服務程式的時候,即使來了更高優先順序的中斷服務請求,430也會置之不理,直至低優先順序中斷服務程式執行完畢,才會去響應高優先順序中斷。這是因為430在響應中斷程式的時候,總中斷gie是復位狀態的,如果要產生類似51的中斷巢狀,只能在中斷函式內再次置位gie位。 

2.定時器ta 

timera有2個中斷向量。timera0,timera1 

timera0只針對ccr0的計數溢位 

timera1再查詢taiv後可知道是ccr1,還是ccr2,亦或taifg引起的,至於taifg是什麼情況下置位的,則要看ta工作的模式 

具體看使用者手冊。還有一點ta本身有pwm輸出功能,無須借用中斷功能。在這個問題上經常出現應用彎路的是如何結合ta和ad實行定時取樣的問題,很多人都是在ta中斷裡開啟ad這樣來做。這是不適宜的,因為430 的adc10,adc12(sd16不熟悉,沒發言權)模組均有脈衝取樣模式和擴充套件取樣模式。只要選擇ad是由ta觸發取樣,然後把ta設定成pwm輸出模式,當然輸出pwm波的都是特殊功能腳,但是在這裡它是不需要輸出的,所以引腳設定不必理會。值得關心的就是pwm的頻率,也就是你ad的取樣率。 

3.看門狗復位 

看門狗有2種工作模式:定時器 ,看門狗 

定時器工作模式下wdtifg在響應中斷服務程式有標誌位自動復位,而在看門狗模式下,該標誌位只能軟體清零。但是怎麼判斷復位是由於wdt工作在看門狗模式下的定時溢位引起的,還是看門狗寫金鑰錯誤引起的呢?……………………………… 

答案是沒有方法,至少我沒見過有什麼方法,也沒見過周邊的人有什麼方法。若有人知道方法謝謝分享。 

4.經常有人會問這個語句的mov.b  #lpm0,0(sp)的作用。假如你在進入中斷函式之前,430是在lpm0下待機,若要求執行完中斷函式之後進入lpm3待機,在中斷函式裡寫mov.b  #lpm3,sr是無效的。因為在進入中斷時430會把pc,sr壓棧,( sr內儲存著低功耗模式的設定)即使你寫了mov.b  #lpm3,sr,在退出中斷出棧時sr會被重新設定成低功耗0,要達到這樣的目的,只能更改堆疊內sr的設定:mov.b  #lpm0,0(sp)。 

5中斷向量: 

430的中斷向量是ffe0h—ffffh,一共32個位元組也就是flash的最後一段,430的flash有大有小,但是最後位址肯定是ffffh(大flash超過64k的除外)所以它們的起始位址是不一樣的,而一般iar預設編譯都是把程式放在flash開始的位置(不包括資訊段)。 

有個值得弄清楚的問題是:什麼是中斷向量?中斷向量實際就是儲存中斷函式入口位址的儲存單元空間。就像fffeh+ffffh這2個位元組是復位中斷向量,那麼它儲存的就是主函式在flash內的起始位址,假如主函式儲存在以0x1100為起始位址的flash塊內 ,那麼你會發現ffffh 內儲存的是0x11, fffe內儲存的是0x00.其他什麼timera,adc12,所有的都一樣。只是你每次寫的程式長短不一,中斷函式放的位置不一樣。iar編譯器都會給你定好,然後在你用jtag燒寫程式的時候,把這個位址,燒寫到相應的中斷向量。因為中斷函式所處位址可以由使用者自定義,也可以讓iar自動編譯,所以這個位址除了源**開發人員知道,其他人是不知道的,bsl就是應用這32個位元組的中斷向量內的內容的特殊性設定的密碼。但是有幾個東西在430是不變的,就是觸發中斷的條件滿足後,它到哪個地方去定址中斷服務函式的入口位址,是ti 在做430時就固化好,定死的。比方說上電復位的時候,它知道去fffe,ffff單元找位址,而不去ffe0,ffe2找位址,這個對映關係是430固化不變的。可有的時候你就是需要改變「中斷向量」,這怎麼辦?430flash程式自公升級裡有時就會碰到這個問題,方法是在430原來預設的中斷向量表內做乙個跳轉操作,同樣以上電復位為例: 

org  0x2345 

powerreset: mov.w  &0xfcfe,pc 

………………………… 

………………………… 

org  0xfffe 

dw   powerreset 

這樣的話0xfcfe就相當是0xfffe的映**。這個在430程式自公升級的ti應用報告裡就有。 

有點晚,就到這裡。有新的內容的話,我會新增。希望大家能夠喜歡。

使用MSP430注意的問題

i nclude 指要在編輯器設定目錄下,i nclude 指的是在當前工程目錄下。2.要呼叫另乙個檔案中的函式,要把這個函式檔案放到當前工程目錄下,並且在工程中新增此檔案。3.命名中不能有 比如 byq ee會認為是錯誤的,要用下劃線。4.用iar軟體 時,可以加入變數,如果是檢視i o資訊只需加...

MSP430數碼管的使用

首先應該了解數碼管及其工作原理。了解你使用的是共陰還是共陽數碼管,其次了解數碼管的段選位選。接下來是乙個例程 includetypedef unsigned char uchar define wei h p5out bit5 define wei l p5out bit5 define duan ...

msp430微控制器GPIO基礎理解

微控制器的埠可以通過方向暫存器pxdir來設定輸出 1 還是輸入 0 可以通過輸入暫存器pxin來檢視輸入埠引腳的電平,嘗用來判斷按鍵是否按下。也可通過pxie,pxies,pxifg實現按鍵中斷,按下某鍵後執行一段中斷程式。可通過輸出暫存器pxout來寫入輸出,常用來控制數碼管顯示和指示燈等輸出裝...