嵌入式系統(tǒng)原理實(shí)驗(yàn)五按鍵實(shí)驗(yàn)_第1頁(yè)
嵌入式系統(tǒng)原理實(shí)驗(yàn)五按鍵實(shí)驗(yàn)_第2頁(yè)
嵌入式系統(tǒng)原理實(shí)驗(yàn)五按鍵實(shí)驗(yàn)_第3頁(yè)
嵌入式系統(tǒng)原理實(shí)驗(yàn)五按鍵實(shí)驗(yàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)五按鍵輸入實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?利用板載的4個(gè)按鍵,來(lái)控制板載的兩個(gè)LED的亮滅和蜂鳴器的開(kāi)關(guān)。通過(guò)本實(shí)驗(yàn),將了解到STM32F1的IO口作為輸入口的使用方法。內(nèi)容要點(diǎn).1.STM32IO口簡(jiǎn)介STM32F1的IO口在上一章巳經(jīng)有了比較詳細(xì)的介紹,這里我們不再多說(shuō)。STM32F1的IO口做輸入使用的時(shí)候,是通過(guò)調(diào)用函數(shù)GPIO_ReadInputDataBit()來(lái)讀取IO口的狀態(tài)的。了解了這點(diǎn),就可以開(kāi)始我們的代碼編寫(xiě)了。這一個(gè)實(shí)驗(yàn),我們將通過(guò)ALIENTEK戰(zhàn)艦STM32開(kāi)發(fā)板上載有的4個(gè)按鈕(WK_UP、KEY0、KEY1和KEY2),來(lái)控制板上的2個(gè)LED(DS0和DS1)和蜂鳴器,其中WK_UP控制蜂鳴器,按一次叫,再按一次停;KEY2控制DS0,按一次亮,再按一次滅;KEY1控制DS1,效果同KEY2;KEY0則同時(shí)控制DS0和DS1,按一次,他們的狀態(tài)就翻轉(zhuǎn)一次。有源蜂鳴器自帶了震蕩電路,一通電就會(huì)發(fā)聲2.硬件設(shè)計(jì)本實(shí)驗(yàn)用到的硬件資源有:指示燈DS0、DS14個(gè)按鍵:KEY0、KEY1、KEY2、和WK_UP。DS0、DS1以及蜂鳴器和STM32的連接在上兩章都巳經(jīng)分別介紹了,在戰(zhàn)艦STM32開(kāi)發(fā))PE2 |kEY212PENKEY113)PE2 |kEY212PENKEY113PE4SEYO,PE2'TRACECKTSMCA23PE3TRACED0TSMC_A1。PE4TRACEDIFS\TC~A20KEY1連接在PE3上、KEY2連接在PE2上、WK_UP連接在PA0按鍵與STM32連接原理圖這里需要注意的是:KEY0、KEY1和KEY2是低電平有效的,而WK_UP是高電平有效的,并且外部都沒(méi)有上下拉電阻,所以,需要在STM32內(nèi)部設(shè)置上下拉。3.軟件設(shè)計(jì)key.h#ifndefKEYH#define__KEY_H#include"sys.h”#defineKEY0GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)〃讀取按鍵0#defineKEY1GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)〃讀取按鍵1#defineKEY2GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)〃讀取按鍵2#defineWK_UPGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//讀取按鍵3(WK_UP)#defineKEY0_PRES1//KEY0按下#defineKEY1_PRES2//KEY1按下#defineKEY2_PRES3//KEY2按下#defineWKUP_PRES4//WK_UP按下(即WK_UP/WK_UP)voidKEY_Init(void);//IO初始化u8KEY_Scan(u8);〃按鍵掃描函數(shù)#endif這段代碼里面最關(guān)鍵就是4個(gè)宏定義:#defineKEY0GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)〃讀取按鍵0#defineKEY1GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)〃讀取按鍵1#defineKEY2GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)〃讀取按鍵2#defineWK_UPGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)〃讀取按鍵3(WK_UP)然后我們打開(kāi)USER文件夾Template.uvprojx,按新建按鈕新建一個(gè)文件,然后保存在HARDWARE->BEEP文件夾下面,保存為key.G在該文件中輸入如下代碼:#include"stm32f10x.h”#include"key.h”#include"sys.h”#include"delay.h"voidKEY_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//設(shè)置成上拉輸入GPIO_Init(GPIOE,&GPIO_InitStructure);//初始化PE4,PE3,PE2GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//設(shè)置成下拉輸入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA0}u8KEY_Scan(u8mode){staticu8key_up=1;if(mode)key_up=1;if(key_up&&(KEY0==0||KEY1==0)){delay_ms(10);key_up=0;if(KEY0==0)returnKEY0_PRES;elseif(KEY1==0)returnKEY1_PRES;}elseif(KEY0==1&&KEY1==1)key_up=1;return0;}led.h#ifndef__LED_H#define__LED_H#include"sys.h”#defineLED0PBout(5)#defineLED1PEout(5)voidLED_Init(void);#endifled.c#include"led.h"#include"stm32f10x.h”voidLED_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOE,&GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_5);}main.c#include"led.h”#include"delay.h"#include"key.h”#include"sys.h”intmain(void){vu8key=0;delay_init();LED_Init();KEY_Init();while(1){key=KEY_Scan(0);if(key){switch(key)caseKEY1_PRES:LED1=!LED1;break;caseKEY0_PRES:LED0=!LED0;LED1=!LED1;break;}elsedelay_ms(10);}}實(shí)驗(yàn)現(xiàn)象

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論