嵌入式技術及應用(STM32CubeMX版)課件 任務5 顯示按鍵的狀態_第1頁
嵌入式技術及應用(STM32CubeMX版)課件 任務5 顯示按鍵的狀態_第2頁
嵌入式技術及應用(STM32CubeMX版)課件 任務5 顯示按鍵的狀態_第3頁
嵌入式技術及應用(STM32CubeMX版)課件 任務5 顯示按鍵的狀態_第4頁
嵌入式技術及應用(STM32CubeMX版)課件 任務5 顯示按鍵的狀態_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

任務5顯示按鍵的狀態任務要求STM32的PC13、PD13引腳上接有2只按鍵電路,PC13腳接按鍵K1,PD13腳接按鍵K2,PE0~PE7引腳上接有8只發光二極管控制電路,發光二極管采有低電平有效控制,要求用STM32CubeMX生成初始化程序,然后在Keil中編程實現以下功能:(1)上電后,所有發光二極管熄滅。(2)用接在PE0、PE1引腳上的發光二極管LED1和LED2顯示K1、K2的狀態,K1按下時LED1點亮,否則LED1熄滅,K2按下時LED2點亮,否則LED2熄滅。知識儲備

1.GPIO口輸入特性GPIO口一位引腳的結構圖如圖所示。圖中上面部分是數據輸入。數據輸入有3種:

一是模擬輸入,

二是復用功能輸入,

三是來自輸入數據寄存器的輸入。這三種輸入均來自于輸入驅動器,但只有來自輸入數據寄存器的輸入才是GPIO輸入。GPIO口一位引腳的結構圖1.GPIO口輸入特性

在輸入驅動器中,輸入端有2個電阻分別通過2個電子開關接電源和接地,GPIO輸入可以配置成上拉、下拉或浮空(既無上拉電阻也無下拉電阻)三種輸入。輸入驅動器有一個肖特基觸發器,用來對信號進行整形,使觸發器輸出數字信號0或1。GPIO口一位引腳的結構圖1.GPIO口輸入特性

輸入數據寄存器所輸入信號為數字信號0或1,當I/O引腳上的信號發生變化時,內部電路會把經肖特基觸發器整形后的數字信號存入輸入數據寄存器,用戶可以通過讀取輸入數據寄存器的值來獲取GPIO口的狀態。模擬量輸入是未經觸發器整形的模擬信號,它直接來自于I/O引腳,其他輸入都是經整形后的數字信號。GPIO口一位引腳的結構圖2.GPIO口的輸入函數函數的用法HAL_GPIO_ReadPin()原型GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);功能讀取輸入引腳的電平的狀態。參數1GPIOx:引腳所在的端口,取值為GPIOA~GPIOH。參數2GPIO_Pin:引腳編號。取值為GPIO_PIN_0~GPIO_PIN_15。GPIO_PIN_i代表的是第i位為1其他位為0的二進制數,可以用1<<i表示。返回值指定引腳的電平狀態,其值為枚舉值GPIO_PIN_RESET(0)或者GPIO_PIN_SET(1)。【舉例】設PC13引腳的輸入腳,讀取PC13引腳的狀態將保存至key變量中的程序如下:key=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);3.GPIO口的并行輸入

GPIO口的并行輸入的方法是,直接讀取輸入數據寄存器IDR的值。在HAL庫中,Px口(x為A~G,下同)的輸入數據寄存器IDR表示為GPIOx->IDR,IDR寄存器是32位寄存器,但其高16位無效,低16位用來保存Px口的16個引腳的輸入狀態,IDR寄存器的第i位對應Px口的第i個引腳。例如,讀PA0~PA7引腳的狀態至無符號字符型變量m中的程序段如下:uint8_tm;//定義無符號字符型變量m,用于保存所讀得的8位引腳的狀態m=GPIOA->IDR;//讀IDR寄存器的值,并將其低8位賦給m程序中,GPIOA->IDR是一個16位的數,而m是一個8位的變量,所以,程序執行后,m中的數為PA0~PA7引腳的狀態。再如,將PC8~PC15引腳的狀態讀至無符號字符型變量m中的程序段如下:uint8_tm;//定義無符號字符型變量m,用于保存所讀得的8位引腳的狀態m=GPIOC->IDR>>8;//讀IDR寄存器的值,并將其高8位賦給m4.按鍵電路

用PC13腳控制一只按鍵的電路如圖所示。圖中,K1為按鍵,R1為上拉電阻,它與K1一起將按鍵按下與釋放的機械動作轉換成單片機可識別的高低電平。K1按下,A點接地,PC13引腳輸入為低電平;K1釋放,A點經R1接VCC,為高電平,PC13引腳輸入為高電平。如果去掉R1,則在K1釋放時,A點的電平狀態是不確定的。按鍵的電路4.按鍵電路

C1為去抖動濾波電容。在一次按鍵操作中,由于按鍵的機械特性的原因,鍵按下或釋放都有一個彈跳的抖動過程,抖動波形圖如下圖所示。抖動時間的長短與按鍵的機械特性有關,一般為5~15ms。按鍵抖動必須消除,否則會引起按鍵識別錯誤。按鍵的兩端并上一個小電容,利用電容的濾波特性可以濾除抖動的干擾波。按鍵的電路抖動波形圖實現方法與步驟任務5的硬件電路:

1.搭建電路2.生成GPIO口的初始化代碼步驟任務5中所使用的STM32硬件資源多了PC13和PD13兩個輸入腳,可以適當地修改任務4的STM32CubeMX工程來建立任務5的STM32CubeMX工程。任務5中生成GPIO口初始化程序的實現方法如下:(1)打開“D:\ex”文件夾,然后復制Task4文件夾及其子文件夾的內容,再將復制后的文件夾(Task4-副本)改名為Task5。(2)打開“D:\ex\Task5”文件夾,刪除文件夾中除Task4.ioc文件以外的所有文件及文件夾,然后將Task4.ioc文件改名為Task5.ioc。(3)雙擊Task5.ioc文件圖標,打開任務5的STM32CubeMX工程文件。

2.生成GPIO口的初始化代碼(4)在STM32CubeMX工程中配置PC13、PD13引腳。步驟如下:第1步:在引腳視圖中點擊PC13引腳,然后在彈出的菜單中點擊“GPIO_Input”菜單項,將PC13設置成輸入腳,如圖所示。第2步:重復第1步將PD13腳也設置成輸入腳。

設置PC13引腳2.生成GPIO口的初始化代碼第3步:在工程窗口中點擊左邊窗口中的“SystemCore”→“GPIO”列表項,使工程窗口的中間出現“GPIOModeandConfiguration”窗口,如右圖所示。第4步:在右圖所示的配置GPIO口窗口中單擊GPIO配置列表框中的PC13列表項,列表框的下面就會出現“PC13-TAMPER-RTCConfiguration”配置框架。配置GPIO口2.生成GPIO口的初始化代碼第5步:在配置框架的“GPIOmode”下拉列表框中選擇“inputmode”模式,在“GPIOPull-up/Pull-down”下拉列表框中選擇“Pull-up”列表項,再在“UserLabel”文本框中輸入用戶標簽K1。第6步:重復第5步,將PD13設置為上拉輸入模式,用戶標簽為K2。(5)保存工程,然后生成Keil工程代碼。配置GPIO口3.編寫顯示按鍵狀態程序任務5中顯示按鍵狀態的程序,其代碼詳見鏈接。按照程序編寫規范將上述程序代碼填寫至main.c文件的對應位置處,即得到顯示按鍵狀態的程序,其實現步驟如下:(1)打開Keil工程,打開main.c文件。(2)在main.c文件的“USERCODEBEGINWHILE”與“USERCODEENDWHILE”間(while代碼區中)添加第6行~第21行的代碼。(3)點擊圖標工具欄上的保存文件圖標按鈕“”,保存main.c文件。4.調試與下載程序任務5中我們用仿真器下載程序,其方法如下:第1步:按照前面介紹的方法配置好調試器,并編譯連接程序,并對程序調試排錯,直至程序正確為止。第2步:連接仿真器并給開發板上電。第3步:將開發板上的程序運行模式開關拔至“接地”位置,也就是讓STM32從FLASH存儲器中啟動程序。4.調試與下載程序第4步:在Keil窗口中點擊圖標工具欄上的下載程序圖標按鈕“”,如右圖所示,Keil就通過仿真器將連接后所生成的程序文件下載到STM32中。第5步:按開發板上的復位鍵,STM32開始執行所下載的程序。此時我們可以看到,按下K1鍵,LED1就點亮,釋放K1鍵,LED1就熄滅;按下K2鍵,LED2就點亮,釋放K2鍵,LED2就熄滅。下載程序實踐總結與拓展

GPIO口的引腳可作模擬輸入腳、復用功能輸入腳和GPIO口的輸入腳。其中,模擬輸入是未經整形的模擬信號,而其他輸入都是經過整形后的數字信號。GPIO口的輸入有上拉輸入、下拉輸入和浮空輸入3種方式,在HAL庫中,讀GPIO口輸入的函數是HAL_GPIO_ReadPin(),該函數只能讀取一位引腳的輸入,若要實現并行輸入,則需讀取GPIO口的輸入數據寄存器IDR。按鍵的常用接口電路是,按鍵的一端接地,另一端接上拉電阻,同時接單片機的I/O口,

溫馨提示

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

評論

0/150

提交評論