嵌入式技術(shù)及應(yīng)用(STM32CubeMX版)課件 任務(wù)5 顯示按鍵的狀態(tài)_第1頁
嵌入式技術(shù)及應(yīng)用(STM32CubeMX版)課件 任務(wù)5 顯示按鍵的狀態(tài)_第2頁
嵌入式技術(shù)及應(yīng)用(STM32CubeMX版)課件 任務(wù)5 顯示按鍵的狀態(tài)_第3頁
嵌入式技術(shù)及應(yīng)用(STM32CubeMX版)課件 任務(wù)5 顯示按鍵的狀態(tài)_第4頁
嵌入式技術(shù)及應(yīng)用(STM32CubeMX版)課件 任務(wù)5 顯示按鍵的狀態(tài)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

1.GPIO口輸入特性GPIO口一位引腳的結(jié)構(gòu)圖如圖所示。圖中上面部分是數(shù)據(jù)輸入。數(shù)據(jù)輸入有3種:

一是模擬輸入,

二是復(fù)用功能輸入,

三是來自輸入數(shù)據(jù)寄存器的輸入。這三種輸入均來自于輸入驅(qū)動器,但只有來自輸入數(shù)據(jù)寄存器的輸入才是GPIO輸入。GPIO口一位引腳的結(jié)構(gòu)圖1.GPIO口輸入特性

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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

提交評論