




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ARMCortex-M3嵌入式控制技術
——基于STM32F103RCT6
STM32F103硬件系統與KEILMDK工程第五章
按鍵與中斷處理
本章將介紹嵌套向量中斷控制器NVIC的工作原理,闡述STM32F103RCT6微控制器外部輸入中斷的工作原理。接著,以用戶按鍵為例,詳細解釋NVIC中斷的寄存器類型和庫函數類型的程序設計方法。然后,介紹ZLG7289B芯片驅動LED燈、按鍵和數碼管的原理和程序設計方法1NVIC中斷工作原理2GPIO外部輸入中斷3
用戶按鍵中斷實例4ZLG7289B按鍵、LED燈和數碼管5.1NVIC中斷工作原理嵌套向量中斷控制器NVIC相關的中斷管理工作主要有開放中斷、關閉中斷、設置中斷請求標志、讀中斷請求標志、清除中斷請求標志和配置中斷優先級等。嵌套向量中斷控制器NVIC的寄存器有ISER0、ISER1、ICER0、ICER1、ISPR0、ISPR1、ICPR0、ICPR1、IABR0、IABR1、IPR0~IPR14和STIRNVIC寄存器序號地址寄存器名稱描述10xE000E100ISER0中斷開放寄存器ISER0[0]~ISER0[31]、ISER1[0]~ISER1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1開放中斷0xE000E104ISER120xE000E180ICER0中斷關閉寄存器ICER0[0]~ICER0[31]、ICER1[0]~ICER1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1關閉中斷0xE000E184ICER130xE000E200ISPR0中斷設置請求狀態寄存器ISPR0[0]~ISPR0[31]、ISPR1[0]~ISPR1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1請求中斷0xE000E204ISPR140xE000E280ICPR0中斷清除請求狀態寄存器ICPR0[0]~ICPR0[31]、ICPR1[0]~ICPR1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1清中斷標志0xE000E284ICPR150xE000E300IABR0中斷活躍位寄存器(只讀)IABR0[0]~IABR0[31]、IABR1[0]~IABR1[27]依次對應中斷號為0~59的中斷,各位讀出1,表示相應中斷活躍0xE000E304IABR160xE000E400~0xE000E438IPR0~IPR14中斷優先級寄存器共有16個優先級,優先級號從0~15,優先級號0表示的優先級最高,優先級號15表示的優先級最低70xE000EF00STIR軟件觸發中斷寄存器第[8:0]位域有效,寫入0~59中的某一中斷號,則觸發相應的中斷中斷優先級配置寄存器每個IPR寄存器用于設置4個NVIC中斷的優先級,32位的IPR寄存器的4個字節的低4位均無效,只有高4位有效,故可以設置的優先級號為0~15。根據圖5-1,如果設置EXTI2中斷的優先級號為10,則需要將IPR2的第[7:4]位域設為10。當兩個中斷具有不同的優先級號時,優先級號小的中斷優先級高;當兩個中斷具有相同的優先級號時,中斷號小的中斷優先級高。異常號4~15的優先級配置寄存器可配置優先級的異常的優先級號由3個系統手柄優先級寄存器(SHPR1~3)設置,其地址依次為0xE000ED18、0xE000ED1C和0xE000ED20序號異常號異常名稱位域配置名稱寄存器14MemManage[7:0]PRI_4SHPR125BusFault[15:8]PRI_536UsageFault[23:16]PRI_647保留[31:24]PRI_758保留[7:0]PRI_8SHPR269保留[15:8]PRI_9710保留[23:16]PRI_10811SVCall[31:24]PRI_11912DebugMonitor[7:0]PRI_12SHPR31013保留[15:8]PRI_131114PendSV[23:16]PRI_141215SysTick[31:24]PRI_155.2GPIO外部輸入中斷根據寄存器AFIO_EXTICR1~4(見第4章表4-3),可從GPIO口中選擇16個管腳配置為16個外部中斷的輸入端,如圖5-2所示。注意:對于STM32F103RCT6芯片,只有PA、PB、PC和PD[2:0]有效,其余管腳無效。EXTI模塊共有19根線路,除了外部中斷EXTI0~EXTI15外,還有EXTI16、EXTI17和EXTI18,這三根線路分別與PVD輸出、RTC報警事件和USB喚配事件相連接。EXTI模塊有共6個寄存器,即中斷屏蔽寄存器EXTI_IMR、事件屏蔽寄存器EXTI_EMR、上升沿觸發選擇寄存器EXTI_RTSR、下降沿觸發選擇寄存器EXTI_FTSR、軟件觸發事件寄存器EXTI_SWIER和中斷請求寄存器EXTI_PR。EXTI模塊寄存器的基地址為0x40010400。5.3用戶按鍵中斷實例STM32F103RCT6微控制器的PA6和PA7依次借助網絡標號USER_BUT1和USER_BUT2與按鍵S18和S19相連接;PB1與網絡標號USER_BELL相連接,控制蜂鳴器B2的開啟與關閉。本節擬設計工程,實現如下功能:(1)S18按鍵作為外部中斷EXTI6輸入端,當按下S18按鍵時,點亮LED燈D11;(2)S19按鍵作為外部中斷EXTI7輸入端,當按下S19按鍵時,熄滅LED燈D11。同時,如果蜂鳴器原來是開啟的,則關閉蜂鳴器;否則,開啟蜂鳴器。5.3.1寄存器類型工程實例在工程PRJ01的基礎上,新建工程“PRJ03”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ03”下,此時的工程PRJ03與工程PRJ01完全相同。現在,修改main.c和includes.h文件,并新建bsp.c、bsp.h、beep.c、beep.h、key.c、key.h、exti.c和exti.h文件(新建的文件均保存在目錄“D:\STM32F103RCT6PRJ\PRJ03\BSP”下),然后,將bsp.c、beep.c、key.c和exti.c文件添加到“BSP”分組下,建設好的工程如圖所示。代碼:11代碼:12代碼:13工程PRJ03的工作流程工程PRJ03運行到主函數main后,執行BSPInit函數初始化LED燈、按鍵、蜂鳴器和外部中斷等外設,然后進行無限循環體,執行LED燈D9和D10的循環閃爍功能。工程PRJ03中有1個中斷服務函數,當按鍵S18被按下時,執行EXTI9_5_IRQHandler中斷服務函數,點亮LED燈D11;當按鍵S19被按下時,也觸發執行EXTI9_5_IRQHandler中斷服務函數,熄滅LED燈D11,同時,使蜂鳴器切換工作狀態5.3.2庫函數類型工程實例本小節討論的工程與第5.3.1節的工程PRJ03實現的功能完全相同,這里使用庫函數方式進行工程設計。在工程PRJ02的基礎上,新建工程“PRJ04”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ04”下,此時的工程PRJ04與工程PRJ02完全相同,需要做的修改為:(1)修改文件main.c和includes.h;(2)新建文件bsp.c、bsp.h、key.c、key.h、beep.c、beep.h、exti.c和exti.h,新建的文件均保存在目錄“D:\STM32F103RCT6PRJ\PRJ04\BSP”下;(3)將bsp.c、key.c、beep.c和exti.c文件添加到工程管理器的“BSP”分組下;(4)將位于目錄“D:\STM32F103RCT6PRJ\PRJ04\STM32F10x_FWLib\src”下的庫文件stm32f10x_exti.c添加到工程管理器的“LIB”分組下。建設好的工程PRJ04如圖所示。代碼:16代碼:17代碼:185.4.1ZLG7289B工作原理嵌入式控制系統中最常用的部件是按鍵和七段數碼管,用作系統的輸入設備和輸出設備,ZLG7289B為專用于驅動按鍵和數碼管的芯片。一片ZLG7289B可同時驅動64個按鍵和8個七段數碼管(即64個LED燈)。STM32F103RCT6學習板上集成了一片ZLG7289B芯片,驅動了16個按鍵、8個LED燈和一個四合一七段數碼管,電路原理圖參考第3.8節。ZLG7289B芯片管腳布局如圖所示“數碼管段選信號”是指用于驅動七段數碼管中的某個段的控制信號,一般連接到數碼管的8個段控制管腳的某一腳上(8個段控制管腳為a、b、c、d、e、f、g和小數點dp);“數碼管字選信號”也常被稱為“數碼管位選信號”,是指用于驅動多合一數碼管中單個數碼管的控制信號,一般連接到數碼管的公共有效端,由于ZLG7289B只能驅動共陰式數碼管,所以數碼管字選信號連接到單個數碼管的陰極公共端管腳號管腳名作用1RTCC電源,一般直接與VCC相連2VCC電源,2.7~6V3NC懸空4GND接地5NC懸空6CS片選信號,低電平有效,輸入7CLK串行數據位時鐘信號,下降沿有效,輸入8DIO串行數據輸入輸出口,雙向9INT按鍵中斷請求信號,下降沿有效,輸出10~17KR0~KR7鍵盤行信號0~7,同時也用作數碼管段選信號,依次為g、f、e、d、c、b、a和dp18~25KC0~KC7鍵盤列信號0~7,同時也用作數碼管字選信號0~726OSC2晶振輸出信號27OSC1晶振輸入信號28RST復位信號,低有效ZLG7289B訪問時序。(a)為STM32F103RCT6向ZLG7289B寫入單字節指令;(b)為STM32F103RCT6向ZLG7289B寫入單字節指令+單字節數據;(c)為STM32F103RCT6向ZLG7289B寫入單字節指令(0x15),然后讀出單字節按鍵值,這里第一個指令字節必須為0x15七段數碼管各個段的顯示位置序號指令字節數據字節含義10xA4無清除顯示內容20xBF無使全部LED燈閃爍30xA0無數碼管顯示左移40xA1無數碼管顯示右移50xA2無數碼管顯示循環左移60xA3無數碼管顯示循環右移70x80+k(dp<<7)|(d3d2d1d0)k為數碼管位置號,取0~7(在圖3-12中僅有4個數碼管,即網標DIG0對應著0,DIG1對應著1,DIG2對應著2,DIG3對應3);dp=0表示小數點熄滅,dp=1表示小數點點亮;d3d2d1d0四位為0000b~1001b對應著顯示0~9,為1010b顯示“-”為1011b~1110b分別顯示E、H、L和P,為1111b無顯示80xC8+k(dp<<7)|(d3d2d1d0)k和dp的含義同上,d3d2d1d0為0000b~1111b時分別對應著顯示0~9、A、B、C、D、E和F90x90+k(dp<<7)|(abcdefg)k和dp的含義同上,a、b、c、d、e、f、g對應著數碼管的各段,為1時亮,為0時滅100x88d7d6d5d4d3d2d1d0di對應著第i個數碼管,為0時閃爍,為1時不閃爍110x98d7d6d5d4d3d2d1d0di對應著第i個數碼管,為1時正常顯示,為0時消隱120xE000d5d4d3d2d1d0將數碼管視為64個LED燈,d5d4d3d2d1d0表示6位地址,從000000b~111111b,表示64個LED燈的地址,每個數碼管內,點亮順度為“g、f、e、d、c、b、a、dp”,地址000000b對應著KR0和KC0相交的LED燈,000001b對應著KR1和KC0相交的LED燈,依此類推130xC000d5d4d3d2d1d0第12條指令為段點亮指令,這里為段熄滅指令,數據字節的含義同上140x15讀出單字節數據讀出的單字節數據包含按鍵值,鍵碼從0~63(0x00~0x3F),無效值為0xFF,鍵碼0對應著KC0與KR0相交的按鍵,鍵碼1對應著KC0與KR1相交的按鍵,依此類推鍵名鍵碼鍵名鍵碼鍵名鍵碼鍵名鍵碼S162S558S954S1350S261S657S1053S1449S360S756S1152S1548S459S863S1251S1655ZLG7289B驅動的按鍵鍵碼5.4.2寄存器類型工程實例本節將創建工程PRJ05,其在工程PRJ03基礎上新添加的功能為:(1)四合一數碼管每個顯示管均周期性從0顯示至9,且顯示小數點和時間分隔符;(2)按下按鍵S1至S8中的Si(i=1,2,…,8)將點亮相應的LED燈Di;(3)按下按鍵S9至S16中的Si(i=9,10,…,16)將熄滅相應的LED燈Di-8。在工程PRJ03的基礎上,新建工程“PRJ05”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ05”下,此時的工程PRJ05與工程PRJ03完全相同。現在,修改main.c、includes.h、bap.c文件,并新建zlg7289.c和zlg7289.h文件(新建的文件均保存在目錄“D:\STM32F103RCT6PRJ\PRJ05\BSP”下),然后,將zlg7289.c文件添加到“BSP”分組下,建設好的工程如圖所示。5.4.2寄存器類型工程實例本節將創建工程PRJ05,其在工程PRJ03基礎上新添加的功能為:(1)四合一數碼管每個顯示管均周期性從0顯示至9,且顯示小數點和時間分隔符;(2)按下按鍵S1至S8中的Si(i=1,2,…,8)將點亮相應的LED燈Di;(3)按下按鍵S9至S16中的Si(i=9,10,…,16)將熄滅相應的LED燈Di-8。在工程PRJ03的基礎
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《財務分析教學課件》課件
- 2025年江蘇省南京市中考英語第一次模擬測試卷(一)(南京卷)(含解析)
- 2024-2025年山東省濟南天橋區濼口實驗學校第二學期八年級道德與法治期中考試試題(含答案)
- 鐵路旅客運輸服務鐵路旅客運輸服務質量規范76課件
- 鐵路橋隧無損檢測任務一認識無損測試課件
- 《Python程序設計基礎》課件 第二章 Python 基礎語法
- 《GB 16351-1996醫用γ射線遠距治療設備放射衛生防護標準》(2025版)深度解析
- 《GB 7000.1-2015燈具 第1部分:一般要求與試驗》(2025版)深度解析
- 中化經典文化課件
- 中專護理課件
- 弘揚傳統文化勤儉節約傳承美德課件
- 小小的自然觀察筆記
- 鋰電池組規格書范本
- 校內蜜雪冰城調查分析報告
- 流行性感冒診療方案(2020版)課件
- 六年級道德與法治上冊 (我們受特殊保護)新課件
- 臍帶、胎盤蛻膜干細胞制備與儲存協議
- 關于藥店醫保整改報告范文六篇
- 灰砂磚合格證
- 第九講 全面依法治國PPT習概論2023優化版教學課件
- 戰地衛生及救護學習教案
評論
0/150
提交評論