一区二区在线播放视频|金发欧美一区在线观看|亚洲五月天激情在线视频|亚洲 欧美 另类 在线|国产私拍福利精品视频网站|精品日韩欧美一区国产三区|亚洲国产成人综合在线电影二|国产91精品高清一区二区三区

下載手機汽配人

msp430編程定時器B的中斷

編了一個計數(shù)周期信號頻率的程序,用定時器B定時中斷控制了一秒的時間,但是中斷里的程序執(zhí)行有問題??梢韵葞兔獯鹣轮袛嗟脑敿氝^程嗎?
提問者:網(wǎng)友 2017-09-16
最佳回答
微控論壇原創(chuàng)主貼  作者:bobo  微控論壇特約因DC的邀請寫一個有關中斷的東東,我也接觸430不久只能以自己的心得體會更大家分享,若有紕漏懇請見諒。MSP430用戶手冊上有的中斷介紹我就不贅述了,大家可以看User Guider.我講的主要是書上沒有的,或者是點的不透的。希望對大家有用。1.中斷嵌套,優(yōu)先級430總中斷的控制位是狀態(tài)寄存器內的GIE位(該位在SR寄存器內),該位在復位狀態(tài)下,所有的可屏蔽中斷都不會發(fā)生響應??善帘沃袛嘤址譃閱沃袛嘣春投嘀袛嘣吹?。單中斷源的一般響應了中斷服務程序中斷標志位就自動清零,而多中斷源的則要求查詢某個寄存器后中斷標志位才會清零。由于大多數(shù)人接觸的第一款單片機通常是51,51單片機CPU在響應低優(yōu)先級的中斷程序過程中若有更高優(yōu)先級的中斷發(fā)生,單片機就會去執(zhí)行高優(yōu)先級,這個過程已經(jīng)產(chǎn)生了中斷嵌套。而430單片機則不同,如果在響應低優(yōu)先級中斷服務程序的時候,即使來了更高優(yōu)先級的中斷服務請求,430也會置之不理,直至低優(yōu)先級中斷服務程序執(zhí)行完畢,才會去響應高優(yōu)先級中斷。這是因為430在響應中斷程序的時候,總中斷GIE是復位狀態(tài)的,如果要產(chǎn)生類似51的中斷嵌套,只能在中斷函數(shù)內再次置位GIE位。2.定時器TATimerA有2個中斷向量。TIMERA0,TIMERA1TIMERA0只針對CCR0的計數(shù)溢出TIMERA1再查詢TAIV后可知道是CCR1,還是CCR2,亦或TAIFG引起的,至于TAIFG是什么情況下置位的,則要看TA工作的模式具體看用戶手冊。還有一點TA本身有PWM輸出功能,無須借用中斷功能。在這個問題上經(jīng)常出現(xiàn)應用彎路的是如何結合TA和AD實行定時采樣的問題,很多人都是在TA中斷里打開AD這樣來做。這是不適宜的,因為430 的ADC10,ADC12(SD16不熟悉,沒發(fā)言權)模塊均有脈沖采樣模式和擴展采樣模式。只要選擇AD是由TA觸發(fā)采樣,然后把TA設置成PWM輸出模式,當然輸出PWM波的都是特殊功能腳,但是在這里它是不需要輸出的,所以引腳設置不必理會。值得關心的就是PWM的頻率,也就是你AD的采樣率。3.看門狗復位看門狗有2種工作模式:定時器 ,看門狗定時器工作模式下WDTIFG在響應中斷服務程序有標志位自動復位,而在看門狗模式下,該標志位只能軟件清零。但是怎么判斷復位是由于WDT工作在看門狗模式下的定時溢出引起的,還是看門狗寫密鑰錯誤引起的呢?………………………………答案是沒有方法,至少我沒見過有什么方法,也沒見過周邊的人有什么方法。若有人知道方法謝謝分享。4.經(jīng)常有人會問這個語句的MOV.B  #LPM0,0(SP)的作用。假如你在進入中斷函數(shù)之前,430是在LPM0下待機,若要求執(zhí)行完中斷函數(shù)之后進入LPM3待機,在中斷函數(shù)里寫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個字節(jié)也就是FLASH的最后一段,430的FLASH有大有小,但是最后地址肯定是FFFFH(大FLASH超過64K的除外)所以它們的起始地址是不一樣的,而一般IAR默認編譯都是把程序放在FLASH開始的位置(不包括信息段)。有個值得弄清楚的問題是:什么是中斷向量?中斷向量實際就是保存中斷函數(shù)入口地址的存儲單元空間。就像FFFEH+FFFFH這2個字節(jié)是復位中斷向量,那么它存儲的就是主函數(shù)在FLASH內的起始地址,假如主函數(shù)保存在以0x1100為起始地址的FLASH塊內,那么你會發(fā)現(xiàn)FFFFH 內保存的是0x11, FFFE內保存的是0x00.其他什么TimerA,ADC12,所有的都一樣。只是你每次寫的程序長短不一,中斷函數(shù)放的位置不一樣。IAR編譯器都會給你定好,然后在你用JTAG燒寫程序的時候,把這個地址,燒寫到相應的中斷向量。因為中斷函數(shù)所處地址可以由用戶自定義,也可以讓IAR自動編譯,所以這個地址除了源代碼開發(fā)人員知道,其他人是不知道的,BSL就是應用這32個字節(jié)的中斷向量內的內容的特殊性設置的密碼。但是有幾個東西在430是不變的,就是觸發(fā)中斷的條件滿足后,它到哪個地方去尋址中斷服務函數(shù)的入口地址,是TI 在做430時就固化好,定死的。比方說上電復位的時候,它知道去FFFE,FFFF單元找地址,而不去FFE0,FFE2找地址,這個映射關系是430固化不變的。可有的時候你就是需要改變“中斷向量”,這怎么辦?430FLASH程序自升級里有時就會碰到這個問題,方法是在430原來默認的中斷向量表內做一個跳轉操作,同樣以上電復位為例:ORG  0x2345PowerReset: mov.w  &0xFCFE,PC……………………………………………………ORG  0xFFFEDW   PowerReset
回答者:網(wǎng)友
產(chǎn)品精選
在移動端查看: msp430編程定時器B的中斷
搜索問答
還沒有汽配人賬號?立即注冊

我要提問

汽配限時折扣

本頁是網(wǎng)友提供的關于“msp430編程定時器B的中斷”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準確性。