內(nèi)容教程案例_第1頁
內(nèi)容教程案例_第2頁
內(nèi)容教程案例_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

青風(fēng)帶你玩藍(lán)nRF51822系列 作者 青風(fēng)電子社區(qū)作者 青:淘寶店:技術(shù)群硬件平臺(tái):青云QY-nRF51822開發(fā)按鍵中下面我就來分別介紹下nRF51822的按鍵中斷控制方式。中斷控制的效率很高,一旦系統(tǒng)IO口出現(xiàn)上升沿或者下降沿電平就會(huì)觸發(fā)執(zhí)行中斷內(nèi)的程序,這樣可以了cpu的占有率。中斷是指由于接收到來自硬(相對(duì)于處理器和內(nèi)存)的異步信號(hào)或來自軟件的同步信號(hào),而進(jìn)行相應(yīng)的硬/軟件處理。發(fā)出這樣的信號(hào)稱為進(jìn)行中斷請(qǐng)求(intuptqut,Q。硬件中斷導(dǎo)致處理器通過一個(gè)上下文切換(otxtth)來保存執(zhí)行狀態(tài)(以程序計(jì)數(shù)器和程序狀態(tài)字等寄存器信息為主;軟件中斷則通常作為PU指令集中的一個(gè)指令,以可編程的方式直接指示這種上下文切換,并將處理導(dǎo)向一段中斷處理代碼。中斷在計(jì)算機(jī)多任務(wù)處理,尤其是實(shí)時(shí)系統(tǒng)中尤為有用,這樣的系統(tǒng),包括運(yùn)行于其上的操作系統(tǒng),也被稱為“中斷驅(qū)動(dòng)的”。簡(jiǎn)單的來說就比如某個(gè)人正在做某事,突然來了個(gè),他就要停下手中的事情去接,中斷相當(dāng)于這個(gè)。觸發(fā)中斷后跳出原來運(yùn)行的程序去執(zhí)行中斷處理。在使用nRF51822完成中斷時(shí),需要設(shè)置如下幾個(gè)地方:第第二:外部GPIO中斷函數(shù)的設(shè)置硬件準(zhǔn)備:在青云nRF51822豪華開發(fā)板上設(shè)置了2個(gè)用戶按鍵如下圖所示:SW1SW2分別P0.16P0.17IO管腳相連IO管腳為低的時(shí)候可以判斷管腳已經(jīng)按下。key的按下來控制led的亮滅。硬件上設(shè)計(jì)是比較簡(jiǎn)單的,這個(gè)普通的MCU的用法一致。軟件準(zhǔn)備:庫文件。打開user文件夾中的key如上圖所示:碼農(nóng)只需要自己編寫紅色框框里的兩個(gè)文件就OK了,因?yàn)椴捎米雍瘮?shù)的方式其中l(wèi)ed.c在上一節(jié)控制LED燈的時(shí)候已經(jīng)寫好,現(xiàn)在我們就來討論下如何編寫exit.c這個(gè)驅(qū)動(dòng)子文件。exit.c文件主要是要起到兩個(gè)作用:第一:初始化開發(fā)板上的按鍵中斷。第二:編寫中斷執(zhí)行代碼。完成這兩個(gè)功能夠就可以在main.c文件中直接調(diào)用本驅(qū)動(dòng)了。首先來認(rèn)識(shí)下如何進(jìn)行中斷設(shè)置。那么先來看GPIOET的功能說明:實(shí)際上就兩種模式,一個(gè)任務(wù)模式,一個(gè)事件模式。其中任務(wù)模式作為輸出使用,而事件模式就作為中斷觸發(fā)使用。任務(wù)模式有三種狀態(tài):置位,清零,翻轉(zhuǎn)。事件模式三種觸發(fā)狀態(tài):上升沿觸發(fā),下降沿觸發(fā),任意變化觸發(fā)。整個(gè)GPIOTE寄存器的個(gè)數(shù)也是非常少的,如下圖所示:我們使用到了按鍵中斷,實(shí)際上使用到了事件模式下面將主要討論這個(gè)模式,任務(wù)模式后面有專門的歷程進(jìn)行討論。在CONFIG這個(gè)寄存器里詳細(xì)的進(jìn)行了事件模式的配置,如下圖所示,三個(gè)紅色框框里的寄存器位我們需要進(jìn)行配置:下面看看代碼:NRF_GPIOTE->CONFIG[0](GPIOTE_CONFIG_POLARITY_HiToLo<<|(16<<//中斷配置(詳細(xì)說明請(qǐng)參看青風(fēng)上面一段代碼的編寫嚴(yán)格按照了寄存器要求進(jìn)行,首先是 MODE,也就是模式設(shè)置,我們?cè)O(shè)置成事件模式。PSEL設(shè)置對(duì)應(yīng)的管腳,我們選擇了SW1管腳P0.16作為觸發(fā)管腳,POLARIY極性設(shè)置為下降沿觸發(fā)。設(shè)置好了工作方式后,我們就需要進(jìn)行中斷的使能了:NVIC_EnableIRQ(GPIOTE_IRQn);//NRF_GPIOTE- =GPIOTE_INTENSET_IN0_Set 使能中斷類型上面的任務(wù)基本上就可以把IO管腳中斷配置好了,如果你搞清楚寄存器,那么這個(gè)配置中斷函數(shù)的設(shè)計(jì),主要任務(wù)就是要求判斷中斷發(fā)生后LED燈進(jìn)行翻轉(zhuǎn),當(dāng)然你可以加入其它的任務(wù)。void09.17.{}那么主函數(shù)就是十分的簡(jiǎn)單了,直接調(diào)用我們寫好的驅(qū)動(dòng)函數(shù),判斷按鍵按下后就可以翻轉(zhuǎn)O口,LD燈指示相應(yīng)的變化。函數(shù)如下所示:/********************CCOPYRIGHT2014*文件名*描 *描 :按鍵中*作 :青*#include"nrf51

溫馨提示

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

評(píng)論

0/150

提交評(píng)論