日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

一、開(kāi)發(fā)板按鍵設(shè)置


    在"STM32-PZ6806L"開(kāi)發(fā)板上除了復(fù)位按鍵外,還設(shè)計(jì)了4個(gè)按鍵,分別標(biāo)為"UP"、"DOWN"、"LEFT"和"RIGHT",其電路如下:

根據(jù)電路連接得知K_UP按鍵一端與GPIOA_0連接,另一端通過(guò)一個(gè)1KΩ電阻接3.3V,所以在對(duì)GPIOA_0配置時(shí)應(yīng)設(shè)置工作方式為“下拉輸入”,當(dāng)按鍵松開(kāi)時(shí)為低電平,按鍵按下時(shí)為高電平;K_LEFT、K_DOWN和K_RIGHT三個(gè)按鍵的一端分別與GPIOE_2、GPIOE_3和GPIOE_4相連,另一端接地,所以對(duì)GPIOE_2、GPIOE_3和GPIOE_4要配置為“上拉輸入”方式,按鍵松開(kāi)時(shí)為高電平,按鍵按下時(shí)為低電平。


二、項(xiàng)目基本配置


該項(xiàng)目在音樂(lè)播放項(xiàng)目基礎(chǔ)上設(shè)計(jì)。實(shí)現(xiàn)分別按這四個(gè)鍵時(shí),蜂鳴器發(fā)出不同的聲音。音樂(lè)播放項(xiàng)目實(shí)現(xiàn)參看:使用STM32控制無(wú)源蜂鳴器發(fā)聲播放音樂(lè)(STM32_07)


1、復(fù)制pMusic項(xiàng)目文件夾,將文件夾改名為"pKey";


2、在"pKey/User"文件夾下新建"Key"文件夾;


3、使用"Keil uVision5"打開(kāi)"pKey"文件夾下的項(xiàng)目"pMusic"(項(xiàng)目名稱沒(méi)有改變);


4、新建"key.h"和"key.c"文件,保存在"pKey/User/Key"文件夾中;


5、將"key.c"文件添加到項(xiàng)目的"User"組中;


6、配置項(xiàng)目,在"C/C++"選項(xiàng)卡中的"Include Paths"中添加對(duì)".UserKey"路徑的包含,便于其他程序包含"key.h"頭文件時(shí),系統(tǒng)能找到。


三、編程實(shí)現(xiàn)按鍵功能


1、"key.h"頭文件程序


在頭文件中定義按鍵GPIO端口宏、按鍵引腳宏和讀取引腳值的宏,定義Key_Init和ReadKey兩個(gè)函數(shù)的聲明。內(nèi)容如下:


#ifndef __KEY__H


#define __KEY__H


#include "system.h"


#include "stm32f10x_gpio.h"


#define KEY_UP_PORT                         GPIOA


#define KEY_OTHER_PORT        GPIOE


#define KEY_UP                                               GPIO_Pin_0


#define KEY_LEFT                                 GPIO_Pin_2


#define KEY_DOWN                              GPIO_Pin_3


#define KEY_RIGHT                              GPIO_Pin_4


//使用庫(kù)函數(shù)方式讀取按鍵


#define K_UP                                           GPIO_ReadInputDataBit(KEY_UP_PORT, KEY_UP)


#define K_LEFT                                       GPIO_ReadInputDataBit(KEY_OTHER_PORT, KEY_LEFT)


#define K_DOWN                                      GPIO_ReadInputDataBit(KEY_OTHER_PORT, KEY_DOWN)


#define K_RIGHT                                      GPIO_ReadInputDataBit(KEY_OTHER_PORT, KEY_RIGHT)


void Key_Init(void);


u8 ReadKey(u8 mode);


#endif


2、"key.c"程序文件程序

"Key_Init"函數(shù)實(shí)現(xiàn)對(duì)GPIOA和GPIOE的使能,配置GPIOA_0為下拉輸入方式,配置GPIOE_2、GPIOE_3和GPIOE_4為上拉輸入方式。"ReadKey"函數(shù)實(shí)現(xiàn)按鍵掃描,通過(guò)參數(shù)"mode"選擇單次掃描(mode=0, 按鍵從按下到松開(kāi)為一次按鍵)和連續(xù)掃描(mode=1,按鍵按下時(shí)到松開(kāi)可以被視為多次按鍵)。


#include "key.h"


#include "stm32f10x_Rcc.h"


#include "SysTick.h"


void Key_Init()


{


         GPIO_InitTypeDef GPIO_mode;


         //使能GPIOA和GPIOE時(shí)鐘


         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOE, ENABLE );    


         GPIO_mode.GPIO_Mode = GPIO_Mode_IPD;


         GPIO_mode.GPIO_Pin = KEY_UP;


         GPIO_mode.GPIO_Speed = GPIO_Speed_50MHz;


         GPIO_Init(KEY_UP_PORT,&GPIO_mode);


        


         GPIO_mode.GPIO_Mode = GPIO_Mode_IPU;


         GPIO_mode.GPIO_Pin = KEY_DOWN|KEY_LEFT|KEY_RIGHT;


         GPIO_mode.GPIO_Speed = GPIO_Speed_50MHz;


         GPIO_Init(KEY_OTHER_PORT,&GPIO_mode);


}


/*


mode=0--單次掃描


mode=1--連續(xù)掃描


*/


u8 ReadKey(u8 mode)


{


         static u8 key = 1;


         if(key==1&&(K_UP==1||K_DOWN==0||K_LEFT==0||K_RIGHT==0))


         {


                   delay_ms(10);


                   key = 0;


                   if(K_UP==1)


                   {


                            return 1;


                   }


                   else if(K_DOWN==0)


                   {


                            return 2;


                   }


                   else if(K_LEFT==0)


                   {


                            return 3;


                   }


                   else if(K_RIGHT==0)


                   {


                            return 4;


                   }


         }


         else if(K_UP==0&&K_DOWN==1&&K_LEFT==1&&K_RIGHT==1)//按鍵松開(kāi)


         {


                   key = 1;


         }


         if(mode==1)


         {


                   key = 1;


         }


         return 0;


}


3、"main.c"程序


在主函數(shù)中,首先初始化SysTick、蜂鳴器IO口、Key按鍵IO口,然后反復(fù)讀取按鍵,根據(jù)按鍵值調(diào)用"beep.c"中的Sound函數(shù)實(shí)現(xiàn)發(fā)聲。程序如下:


#include "beep.h"


#include "SysTick.h"


#include "key.h"


int main()


{


         u8 key, i;


         u16 tone[] = {0,262,294,330,349};


         SysTick_Init(72);


         BEEP_Init();


         Key_Init();


         while(1)


         {


                   key = ReadKey(0);


                   if(key!=0){


                            for(i=0; i<100;i++)


                                     Sound(tone[key]);


                   }


         }


}


4、下載hex文件到開(kāi)發(fā)板,按"UP"、"DOWN"、"LEFT"和"RIGHT"能聽(tīng)到蜂鳴器發(fā)出Do,Re,Mi,F(xiàn)a的聲音。

關(guān)鍵字:STM32  GPIO讀取  按鍵操作 引用地址:使用STM32GPIO讀取按鍵實(shí)現(xiàn)按鍵操作(STM32_08)

上一篇:STM32外部中斷方式按鍵操作(STM32_09)
下一篇:在STM32項(xiàng)目中使用SysTick實(shí)現(xiàn)延時(shí)(STM32_06)

推薦閱讀

一直在做ATmega16的程序,因?yàn)楸荣惖男枰D(zhuǎn)戰(zhàn)到ATmega128的開(kāi)發(fā)。ATmega16和ATmega128都是AVR單片機(jī),它兩個(gè)主要的區(qū)別就是ATmega128資源更加豐富了。理論上來(lái)說(shuō),從16轉(zhuǎn)到128基本沒(méi)什么變化,主要的變化就是寄存器名稱變化。拿我這次做的來(lái)說(shuō):16只有一個(gè)串口,而128有兩個(gè),對(duì)應(yīng)的寄存器就有區(qū)別了(128在寄存器名稱上,區(qū)別串口0和串口1)。按照ATmeg...
  新浪數(shù)碼訊 5月28日晚間消息,本周五,榮耀20發(fā)布會(huì)將在上海召開(kāi),在倫敦全球發(fā)布會(huì)10天之后,這款榮耀的拍照旗艦手機(jī)將在國(guó)內(nèi)正式亮相。手機(jī)本身配置已經(jīng)明確,此時(shí)國(guó)內(nèi)用戶最感興趣的,是它在國(guó)內(nèi)的價(jià)格。  眾所周知,此前華為手機(jī)往往在國(guó)內(nèi)比海外價(jià)格低。當(dāng)旗艦產(chǎn)品回到國(guó)內(nèi),相對(duì)優(yōu)惠的價(jià)格往往給國(guó)內(nèi)用戶驚喜。榮耀是否也會(huì)有類似舉動(dòng)? ...
臺(tái)灣電信業(yè)者表示,從全球5G資費(fèi)來(lái)看,臺(tái)灣5G早鳥(niǎo)資費(fèi)不管是1399雙無(wú)限還是599雙無(wú)限量套餐,都將是全球5G資費(fèi)最低。5G開(kāi)始商用后,早鳥(niǎo)用戶仍能繼續(xù)沿用早鳥(niǎo)套餐享受全球最便宜的5G資費(fèi)。由于臺(tái)灣“行政院”正規(guī)劃通過(guò)政策補(bǔ)貼5G資費(fèi),以加速臺(tái)灣5G普及,NCC定調(diào)在1300元新臺(tái)幣左右的上網(wǎng)無(wú)限量方案將會(huì)是未來(lái)5G多元資費(fèi)方案之一,因此,臺(tái)灣5G資費(fèi)會(huì)非常...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved