一個菜鳥的STM32寄存器學(xué)習(xí)筆記4-外部中斷_第1頁
一個菜鳥的STM32寄存器學(xué)習(xí)筆記4-外部中斷_第2頁
一個菜鳥的STM32寄存器學(xué)習(xí)筆記4-外部中斷_第3頁
一個菜鳥的STM32寄存器學(xué)習(xí)筆記4-外部中斷_第4頁
一個菜鳥的STM32寄存器學(xué)習(xí)筆記4-外部中斷_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、看了一下STM32不完全手冊上的內(nèi)容發(fā)現(xiàn)從按鍵后面的內(nèi)容基本上都要涉及到中斷。所以決定先把中斷搞定。以前使用中斷很是混亂基本都是對著示例程序改改實(shí)現(xiàn)功能就好了。但從回過頭來看看發(fā)現(xiàn)中斷還是很復(fù)雜的。這里先把我學(xué)習(xí)的中斷的相關(guān)知識梳理一下:中斷是CM3核自帶的。所以中斷要在CM3權(quán)威指南中閱讀。STM32中文參考手冊里介紹的不全。CM3內(nèi)核中規(guī)定的可編程中斷源有240個,但STM32F103只使用了前68個,這68個中斷源和編號在STM32F10X.H文件170行有定義STM32中斷和51中斷不同的地方有:STM32多了一個中斷分組的概念,這個分組操作在程序中建議只操作一次就可以。中斷分組用來決

2、定搶占優(yōu)先級和子優(yōu)先級的取值范圍。STM32的每個中斷源都有兩種優(yōu)先級,搶占優(yōu)先級和子優(yōu)先級。這兩個優(yōu)先級的取值范圍由中斷分組決定。搶占優(yōu)先級用來中斷低搶占優(yōu)先級的程序。子優(yōu)先級用來在搶占優(yōu)先級相同時決定誰先執(zhí)行。這兩個優(yōu)先級就好比汽車在過收費(fèi)站,在汽車過收費(fèi)站時有兩個參數(shù)決定你什么時候過。第一你的汽車是什么類型的車,第二你前面還有多少車。第一個屬性就好比搶占優(yōu)先級。警察的車比普通的車的優(yōu)先級高就能插到前面先過收費(fèi)站。第二個屬性好比子優(yōu)先級。都是普通的小車說明搶占優(yōu)先級都一樣,誰先過就看你現(xiàn)在排隊排的幾號。中斷服務(wù)函數(shù)是根據(jù)函數(shù)名來決定的,這個函數(shù)名是在.s的啟動文件中定義好的。其他的和51就

3、沒什么差別。初始化,等待觸發(fā)中斷,進(jìn)中斷服務(wù)函數(shù),執(zhí)行完中斷函數(shù)清除中斷標(biāo)志,返回繼續(xù)執(zhí)行其他程序。下面就根據(jù)外部中斷實(shí)現(xiàn)一個按鍵點(diǎn)亮LED按照以下步驟進(jìn)行中斷初始化設(shè)置中斷分組SCB-AIRCR使能外部中斷NVIC-ISER對外部中斷的優(yōu)先級設(shè)置NVIC-IP按鍵初始化按鍵時鐘使能RCC-APB2ENR復(fù)用時鐘使能RCC-APB2ENR按鍵相關(guān)10口初始化GPI0B-CRL把按鍵引腳和對應(yīng)的外部中斷線連接AFIO-EXTICR外部中斷使能EXTI-IMR設(shè)置觸發(fā)方式EXTI-RTSRLED初始化編寫中斷服務(wù)函數(shù)第一步中斷初始化這里先舉個例子來理解中斷分組和中斷源,搶占優(yōu)先級,子優(yōu)先級的關(guān)系比

4、如一個公司有68個人,先給這68個人編了068的編號(表示68個可編程中斷源,如串口中斷,外部中斷0,外部中斷1等)現(xiàn)在公司要求每人都要被編個號,這個編號分成兩個部分字母部分和數(shù)字部分,編號的大小決定了這個人在公司的地位。并規(guī)定編號越小地位越高。但是這個編號的取值范圍是根據(jù)公司的規(guī)章制度決定的。比如規(guī)章制度上規(guī)定了字母編號只能在2T(2的3次方)以內(nèi)(即只能是AH),數(shù)字編號只能是2T以內(nèi)(即0或者1)。(表示中斷分組,字母是搶占,數(shù)字是子優(yōu)先級)又有一個規(guī)定在打飯時如果字母大的在打飯但字母小的也來打飯了則字母大讓字母小的打完了自己在繼續(xù)打飯。如果字母相同的一起來打飯,就看誰的數(shù)字編號小誰就打

5、飯。但是如果字母相同但數(shù)字編號大的先打飯,那么后來的編號小的不能插到編號大的前面打飯。換句話說就是字母的等級比編號的等級高,字母小的可以插隊到字母大的前面。但是相同字母的不能根據(jù)數(shù)字編號大小來插隊。例如:現(xiàn)在有幾個人編號是這樣的個人編號工作編號0A003A015B017C0165B001.比如個人編號為7號的在打飯,3號和0號一起去了,那么7號要讓3號和0號插隊,由于3號數(shù)字編號比0號的高說以要讓0號在前3號在后,7號在最后。3.現(xiàn)在5號來了5號的編號字母比0和3小比7大則5號插隊到7號之前。3.65號也來了,65號字母比7號小,和5號一樣。65號的數(shù)字編號比5號的小但是65號還是排在7號之前

6、5號之后??偨Y(jié)起來就是:1判斷一個中斷誰先執(zhí)行先根據(jù)搶占優(yōu)先級來判斷是否比現(xiàn)在執(zhí)行的小。是則中斷當(dāng)前執(zhí)行搶占優(yōu)先級小的中斷2兩個相同的搶占優(yōu)先級同時到來,誰的子優(yōu)先級小就執(zhí)行誰3兩個相同的搶占優(yōu)先級一個先執(zhí)行另一個后執(zhí)行,后執(zhí)行的不管子優(yōu)先級高和低都不能中斷先執(zhí)行的那個。中斷分組中斷分組是用啦規(guī)定IP中搶占優(yōu)先級和子優(yōu)先級所占的位位數(shù)的IP是一個數(shù)組共240個元素,每個元素8bit表示一個中斷源。STM32中用到了前面的68個我們通過寄存器SCB-AIRCR中的810位來中斷分組址AIRCR19:8bit7:4分配厭01110:40觥占優(yōu)先躺飾應(yīng)僦級ino1:31觥占僦紈3朋蹴先級21012:

7、2?觥占優(yōu)先縱2飾應(yīng)僦級根據(jù)上表的中斷分組我們有以-下結(jié)論3;1個占W,i40114:04觥占優(yōu)先紈0砸就先級黃色表示搶占優(yōu)先級藍(lán)色表示子優(yōu)先級組0注:這里的中斷分組是種寄存器中的所有元素都適用的。IP0是這樣,IP68也是這樣,且中斷分組一經(jīng)設(shè)置盡量不要修改&段名稱類塑復(fù)雌描述51:16VECTKEYRW訪問鑰匙:任何對該寄存器的寫操作,都喏須同時把OxOSFA寫入此段,否則寫操作被忽略J若讀取此半字,則JXFA05rENDIANESSR指乎端設(shè)S.1一大端(BE8)?0小端*此值是在復(fù)位時確定的,不能更改匸10:3PRKROUPRAV0優(yōu)先級分生2SY8RE8ETFEQW請求芯片控制邏輯產(chǎn)

8、生一複復(fù)位1VECTCLRACTIVEW晴零護(hù)有舁常的活胡狀態(tài)信息通常只在詞試時用,或者在M從錯誤中恢復(fù)時用。在程序匚從上面E中設(shè)置的就是SC的描述中這個寄彳B-AIRCr器需要R丟寫入訪問鑰建復(fù)位CM3處理器內(nèi)核(調(diào)試邏輯除外1,但是上才能操作響芯片上在內(nèi)核以外的電路所以在程序中的語句就是二SCB-AIRCR&=0X05FAF8FF清除分組SCB-AIRCR|=0X05FA0400對108位寫入100即分組3下面就是對中斷的使能和優(yōu)先級的分配先看使能typedefstiuct_IOm32jISER8jwt32jRESERTD024;_IOm32jICW-umt32_tRSERTDl24;_I

9、Om32jISPR8.i血32RESERVED?糾;_IOm32jICPRS;wt32jRESERTD324J;用來使就兩個成,員員這里即元素就行。這里的的每每一_IOii到外部中240:UKd2NICHISEEDj|=H:_0血的我們們用:級到了位4部置.TOC o 1-5 h z嚴(yán)!toemiptSetEnableRegistei勺5!LiiemiptClearEnableRegistei卑嚴(yán)!toemiptSetPendingRegister脅/*!IntemiptClearPendingRegister卑f個I素叫tAc血hiR耶苗用到的嚴(yán)!toemiptPriorityR即妣8Bi:

10、wide*/廣!IP6=0 x30;/0X30展開是00110000表示搶占優(yōu)先級為1子優(yōu)先級為1到這里中2設(shè)置分結(jié)束第二步按鍵初始化按鍵初始化前面都一樣,只是要多初始化RCC-APB2ENR中的位0的復(fù)用管腳時鐘就好比前面按鍵掃描程序多的是關(guān)于4中2的分分成三步把引腳和4中2線相連接使能外部中斷相應(yīng)中斷線設(shè)置觸發(fā)方式,上升沿還是下降沿根據(jù)下圖可以理解一下什么叫把引腳和中斷線相連STM32中斷線有015而引腳有很多,怎么辦?用分組的方法把引腳數(shù)字編號一樣的分成一組通過選擇器把引腳和中斷線相連。EJC期3阿WbInVIO_EXBCR1唧1御313C292S272625242322212019IS

11、17IB151812111093;E513210mi33;0BXn23:0WT0A痛0接PB吒如果中斷線弗訓(xùn)D1DL卩聊瓠0D1Q:PCX|?WDin:PGx5SODIh咂|亂typwdefstruct_IOuint32_tIMR;_IOuint32_tEMR;_IOuiiit32_tRTSR;_IOuiiit32_tFTSR;_IOuint32_tSWIER;_IOuiiit32_tPR:EXTI_Typ亡Def;用到這個結(jié)構(gòu)體里的第一個成員IMRIMR有19位有效150是表示中斷線015的使能16是PVD,17是RTC,18是USB我們是EXTI0所以EXTI-IMR|=0X00000001;下面是觸發(fā)方式是上圖結(jié)構(gòu)體中的RTSR或者FTSRRTSR上升沿觸發(fā)FTSR下降沿觸發(fā)這個也是19位在對飲位寫1就設(shè)置好了觸發(fā)方式我們采用EXTI0上升沿觸發(fā)EXTI-RTSR|=0X00000001;到這就初始化好了按鍵和中斷第三步中斷服務(wù)函數(shù)在51中有一個中斷號比如外部中斷0就是inte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論