01前 言
在開發(fā)指南(一)中我們介紹了示例程序的整體框架,從本章開始將會對使用到的模塊進(jìn)行詳細(xì)介紹。本章我們主要對按鍵中斷的一種簡單用法進(jìn)行講解,參考應(yīng)用手冊第6、7章節(jié)。
02按鍵中斷
因為外部中斷和按鍵中斷都被復(fù)用在GPIO上(KEY0~KEY6對應(yīng)P00~P06),要優(yōu)先設(shè)置GPIO為輸入狀態(tài),而GPIO、外部中斷和按鍵中斷都屬于外設(shè)功能,所以第一步還是先打開相應(yīng)的外設(shè)時鐘使能,接著初始化GPIO00~06的狀態(tài)為輸入上拉,然后進(jìn)行按鍵中斷配置初始化,最后打開按鍵中斷使能,如下圖1:
圖1.按鍵中斷配置初始化
按鍵中斷初始化時,首先要寫入正確的向量號,使能對應(yīng)向量號的中斷,然后根據(jù)應(yīng)用需要配置中斷優(yōu)先級和優(yōu)先級閾值。一般在程序中有多個中斷使用時需要考慮中斷優(yōu)先級問題,在本示例程序SD93F115-JBS_TEST.zip中,中斷優(yōu)先級和閾值都設(shè)置為最高(因為我們是通過按鍵中斷去選擇需要執(zhí)行的測試項,所以我們認(rèn)為按鍵中斷的優(yōu)先級和閾值必須都是最高的),配置完成后便可打開按鍵中斷使能,設(shè)置按鍵KEY0~KEY6作為按鍵輸入。
按鍵中斷基本配置完成后,就需要編寫按鍵中斷服務(wù)函數(shù)了。我們在lib的SD931X_it.c中找到按鍵中斷對應(yīng)的中斷函數(shù)入口,編寫按鍵中斷服務(wù)函數(shù)(其他中斷可在對應(yīng)的中斷函數(shù)中進(jìn)行編寫),如下圖2:
圖2.按鍵中斷服務(wù)函數(shù)
進(jìn)入按鍵中斷服務(wù)函數(shù),第一步先清除中斷標(biāo)志位,避免因忘記清除標(biāo)志位導(dǎo)致系統(tǒng)反復(fù)進(jìn)入中斷(無論KEY0~6中的哪個按鍵觸發(fā)的中斷,都會置起KEYIF標(biāo)志位);第二步是消抖,防止按鍵誤觸發(fā)(LCD顯示會在后續(xù)章節(jié)進(jìn)行說明);第三步便可通過讀取GPIO0的輸入數(shù)據(jù)寄存器GPIO0_IDR,去判斷哪一個或哪幾個按鍵處于按下狀態(tài)(因為IO是被上拉的狀態(tài),所以在無按鍵按下時,寄存器結(jié)果應(yīng)為0x7F,有按鍵按下時對應(yīng)位為0)。
若寄存器結(jié)果與定義的鍵值Key0-Key6相同(見圖3鍵值定義),則將對應(yīng)測試項的標(biāo)志位置1,其他測試項的標(biāo)志位置0,否則程序直接退出中斷。按鍵中斷執(zhí)行完成后,程序會跳出中斷繼續(xù)執(zhí)行圖4的while循環(huán),而在循環(huán)中,我們通過不斷監(jiān)測各測試項的標(biāo)志位是否置1來驗證是否有按鍵按下,如此便可通過簡單的按鍵操作進(jìn)入不同測試項。
圖3.鍵值定義
圖4.while循環(huán)
03開發(fā)問題簡析
開發(fā)階段使用按鍵中斷或其他中斷遇到最多的問題就是中斷不響應(yīng),要重點關(guān)注外設(shè)時鐘是否打開、中斷使能是否打開、對應(yīng)模擬功能是否開啟以及中斷標(biāo)志位是否判斷正確。
04總 結(jié)
本文介紹了一種按鍵中斷的簡單用法,對按鍵中斷的初始化和中斷服務(wù)函數(shù)的編寫的流程進(jìn)行簡單介紹。
示例程序:
SD93F115-JBS_TEST.zip
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17894瀏覽量
362010 -
adc
+關(guān)注
關(guān)注
99文章
6659瀏覽量
548556 -
GPIO
+關(guān)注
關(guān)注
16文章
1279瀏覽量
53724
發(fā)布評論請先 登錄
帶32位MCU和高精度ADC的SoC產(chǎn)品(三)

帶32位MCU和高精度ADC的SoC產(chǎn)品-SD93F系列開發(fā)指南(八)

帶32位MCU和高精度ADC的SoC產(chǎn)品-SD93F系列開發(fā)指南(九)

混合信號 SOC 產(chǎn)品用戶指南
鼎盛合科技芯片CSU18M88,SOC芯片集成高精度ADC和LCD顯示模塊
基于高精度24位ADC的電子血壓計方案
高精度ADC,高精度ADC是什么意思
ADuC816:MicroConverter?,帶嵌入式閃存MCU的雙通道16位ADC產(chǎn)品手冊

ADuC832:帶嵌入式62 kB閃存MCU的MicroConverter、12位ADC和DAC產(chǎn)品手冊

24Bit ADC高精度低功耗MCU 醫(yī)療級別設(shè)備參考設(shè)計(附上高精確算法+電路原理圖)
基于DT5M4765系列(MCU帶24位高精度ADC+LCD驅(qū)動)開發(fā)的便攜式血氧儀

HPM系列MCU 高精度ADC之誤差分析和設(shè)計指南

24位高精度ADC MCT1247產(chǎn)品介紹

評論