0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

以按鍵驅(qū)動(dòng)為例來實(shí)現(xiàn)輸入模式配置方法

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-31 11:13 ? 次閱讀

??1.STM32中GPIO口模式

每個(gè)GPI/O端口有兩個(gè)32位配置寄存器(GPIOx_CRL, GPIOx_CRH),兩個(gè)32位數(shù)據(jù)寄存器(GPIOx_IDR和GPIOx_ODR),一個(gè)32位置位/復(fù)位寄存器(GPIOx_BSRR),一個(gè)16位復(fù)位寄存器(GPIOx_BRR)和一個(gè)32位鎖定寄存器(GPIOx_LCKR)。根據(jù)數(shù)據(jù)手冊中列出的每個(gè)I/O端口的特定硬件特征, GPIO端口的每個(gè)位可以由軟件分別配置成多種模式。

─ 輸入浮空
─ 輸入上拉
─ 輸入下拉
模擬輸入
─ 開漏輸出
─ 推挽式輸出
─ 推挽式復(fù)用功能
─ 開漏復(fù)用功能

每個(gè)I/O端口位可以自由編程,然而I/0端口寄存器必須按32位字被訪問 (不允許半字或字節(jié)訪問 )。 GPIOx_BSRR和 GPIOx_BRR寄存器允許對任何GPIO寄存器的讀/更改的獨(dú)立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ時(shí)不會(huì)發(fā)生危險(xiǎn)。

本示例主要講解IO口輸入模式的應(yīng)用,以按鍵驅(qū)動(dòng)為例來實(shí)現(xiàn)輸入模式配置方法。本次實(shí)驗(yàn)所用開發(fā)板有3個(gè)按鍵,其中一個(gè)為復(fù)位按鍵,另外兩個(gè)則可用戶自行驅(qū)動(dòng)。我們采用板載的2個(gè)按鍵來實(shí)現(xiàn)對LED開關(guān)控制

2.硬件接口

??SW2為復(fù)位按鍵,已直接接到芯片復(fù)位引腳上,SW3接在PB0上、SW4接在PB1上。按鍵按下均為低電平。

在這里插入圖片描述

3.軟件設(shè)計(jì)

1.打開STM32CubmMX代碼生成軟件,將PB0、PB1配置為輸入模式。
2.在選定為輸入模式后,STM32輸入模式分為兩種:浮空輸入、上拉/下拉輸入。
浮空輸入:配置為浮空輸入模式,初始化成功后引腳電平狀態(tài)處于中間態(tài),既不為高也不為低。
上拉/下拉輸入:配置為浮空輸入模式,初始化成功后引腳電平狀態(tài)可以選擇是高電平或者低電平。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

? 因?yàn)榘存I按下為低電平,因此要想檢測到按鍵狀態(tài)變化,初始化時(shí)就得設(shè)置為與按下相反的電平,所用我們這里選擇帶上拉的輸入模式(選擇浮空輸入也可,一般建議使用上拉輸入模式)。

4.生成配置代碼

??使用STM32Cubemx生成代碼時(shí),所有的GPIO初始化均會(huì)放gpio.c中。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center
  1. 在當(dāng)前工程的Core目錄下新建SYSTEM文件夾保存用戶自定義驅(qū)動(dòng)文件。
在這里插入圖片描述

2.創(chuàng)建一個(gè)key.c和key.h文件,在SYSTEM目錄中創(chuàng)建一個(gè)KEY文件夾保存該文件

在這里插入圖片描述

3.添加頭文件路徑,編寫key.h文件

在這里插入圖片描述watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

4.編寫key.c文件,編寫按鍵檢測函數(shù)

u8 KEY_GetVal(void)
{
	u8 static stat=0;
	if((!KEY1 || !KEY2) && !stat)
	{
		stat=1;
		HAL_Delay(30);
		if(!KEY1)return 1;
		else if(!KEY2)return 2;
		else return 0;
	}
	else
	{
		if(KEY1 && KEY2)stat=0;
	}
	return 0;
}

5.實(shí)現(xiàn)按鍵控制LED開關(guān)

在這里插入圖片描述

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356008
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52098
  • 按鍵驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    7133
收藏 人收藏

    評論

    相關(guān)推薦

    DshanMCU-R128s2 ADC按鍵配置方法

    FreeRTOS平臺(tái)上使用的按鍵ADC-KEY,采用的ADC模塊GPADC。 按鍵功能驅(qū)動(dòng)實(shí)現(xiàn)
    的頭像 發(fā)表于 12-22 19:11 ?2294次閱讀
    DshanMCU-R128s2 ADC<b class='flag-5'>按鍵</b><b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    Linux下如何使用中斷的方式驅(qū)動(dòng)按鍵

    Linux下的按鍵輸入驅(qū)動(dòng)開發(fā)模板一文中介紹了基本的按鍵輸入捕獲流程,這里將進(jìn)一步介紹如何使用中斷的方式
    發(fā)表于 07-29 08:59 ?977次閱讀

    STM32F407 GPIO口輸入配置配置步驟

    介紹STM32F407新建寄存器工程流程,介紹輸入模式配置方式,按鍵
    的頭像 發(fā)表于 07-06 14:28 ?2299次閱讀
    STM32F407 GPIO口<b class='flag-5'>輸入</b><b class='flag-5'>配置</b><b class='flag-5'>配置</b>步驟

    高級定時(shí)器PWM輸入模式配置方法

    我們將向大家介紹高級定時(shí)器的另一個(gè)常見應(yīng)用——PWM輸入模式。在本節(jié)課中,我們將先圍繞輸入捕獲模式展開,并重點(diǎn)描述PWM輸入
    的頭像 發(fā)表于 11-08 16:48 ?2219次閱讀
    高級定時(shí)器PWM<b class='flag-5'>輸入</b><b class='flag-5'>模式</b>的<b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    L298N介紹電機(jī)驅(qū)動(dòng)模塊的使用方法

    電機(jī)驅(qū)動(dòng)模塊在電子制作中會(huì)經(jīng)常使用到,下面L298N型號的模塊介紹其使用方法。 模塊引腳說明如下:值得注意的是,它已經(jīng)內(nèi)置5V供電,所
    發(fā)表于 12-30 07:47

    學(xué)習(xí)配置按鍵模塊

    ,PA0分別檢測B1-B4按鍵的狀態(tài)2.Cubemx實(shí)現(xiàn)IO的配置注:RCC的配置是不可少的哦,不記得的可以參看上一節(jié)此處也初始化了LED作為測試顯示。IO
    發(fā)表于 01-11 08:03

    怎樣通過按鍵處理led演示IO輸入模式配置

    怎樣通過按鍵處理led演示IO輸入模式配置呢?有哪些配置步驟?
    發(fā)表于 01-27 06:08

    單片機(jī)的按鍵配置輸入模式獲取控制信號

    關(guān)于STM32學(xué)習(xí)分享第二章 按鍵輸入控制文章目錄前言二、代碼1.key.c2.key.h3.main.c總結(jié)前言開始!開始!單片機(jī)的按鍵配置
    發(fā)表于 02-24 06:06

    SPI驅(qū)動(dòng)展示如何使用ENV工具對BSP進(jìn)行配置

    、SDIO、ADC 等,但是 BSP 工程默認(rèn)沒有開啟這些外設(shè)驅(qū)動(dòng)。RT-Thread 提供了 ENV 工具開啟或關(guān)閉 BSP 的外設(shè)驅(qū)動(dòng)。本文 RA6M4-CPK 開發(fā)板上開啟
    發(fā)表于 07-15 10:55

    全志R128外設(shè)模塊配置——ADC按鍵配置方法

    ADC 按鍵配置方法 FreeRTOS平臺(tái)上使用的按鍵ADC-KEY,采用的ADC模塊GPA
    發(fā)表于 10-20 11:04

    3、GIPO輸入按鍵配置

    本節(jié)通過按鍵處理led演示IO輸入模式配置1、根據(jù)原理圖按鍵找到對應(yīng)的引腳2、打開cubem
    發(fā)表于 12-03 09:06 ?9次下載
    3、GIPO<b class='flag-5'>輸入</b>(<b class='flag-5'>按鍵</b><b class='flag-5'>配置</b>)

    STM32筆記之按鍵KEY輸入

    關(guān)于STM32學(xué)習(xí)分享第二章 按鍵輸入控制文章目錄前言二、代碼1.key.c2.key.h3.main.c總結(jié)前言開始!開始!單片機(jī)的按鍵配置
    發(fā)表于 12-31 19:49 ?7次下載
    STM32筆記之<b class='flag-5'>按鍵</b>KEY<b class='flag-5'>輸入</b>

    AMetal適配:TIM展示如何開發(fā)通用驅(qū)動(dòng)外設(shè)代碼

    基于定時(shí)器、RTC、WDT本質(zhì)上均是計(jì)數(shù)器的共性,本次將這三種通用外設(shè)統(tǒng)一TIM。TIM展示如何開發(fā)通用
    的頭像 發(fā)表于 05-12 17:08 ?1859次閱讀
    AMetal適配:<b class='flag-5'>以</b>TIM<b class='flag-5'>為</b><b class='flag-5'>例</b><b class='flag-5'>來</b>展示如何開發(fā)通用<b class='flag-5'>驅(qū)動(dòng)</b>外設(shè)代碼

    按鍵驅(qū)動(dòng)的實(shí)驗(yàn)

    按鍵驅(qū)動(dòng)實(shí)驗(yàn)與LED以及Beep在整體使用邏輯上一樣,只是按鍵輸入模式。
    的頭像 發(fā)表于 03-02 16:25 ?748次閱讀
    <b class='flag-5'>按鍵</b><b class='flag-5'>驅(qū)動(dòng)</b>的實(shí)驗(yàn)

    STM32單片機(jī)的GPIO輸入、輸出模式配置方法

    STM32 單片機(jī)是一款高性能、低功耗的 32 位微控制器,具有強(qiáng)大的計(jì)算能力、靈活的外設(shè)模塊和實(shí)現(xiàn)微控制器應(yīng)用所需的社區(qū)支持。在單片機(jī)應(yīng)用中,GPIO 輸入輸出模式是必不可少的硬件接口之一。本文將介紹 STM32 單片機(jī)的 G
    發(fā)表于 08-15 18:23 ?8350次閱讀