STM32使用中斷驅動矩陣鍵盤

2021-09-27 08:57:35 字數 2727 閱讀 1260

**

巨集定義

//b6,b7,c8,c9做行掃瞄,c10~c12做列掃瞄

#define row1_gpio_port gpiob //行1

#define gpio_clk rcc_apb2periph_gpiob|rcc_apb2periph_gpioc /* gpio埠時鐘 */

#define row1_gpio_pin gpio_pin_6

#define row2_gpio_port gpiob //行2

#define row2_gpio_pin gpio_pin_7

#define row3_gpio_port gpioc //行3

#define row3_gpio_pin gpio_pin_8

#define row4_gpio_port gpioc //行4

#define row4_gpio_pin gpio_pin_9

#define line1_gpio_port gpioc //列1

#define line1_gpio_pin gpio_pin_10

#define line2_gpio_port gpioc //列2

#define line2_gpio_pin gpio_pin_11

#define line3_gpio_port gpioc //列3

#define line3_gpio_pin gpio_pin_12

初始化

static void nvic_config(void)

void password_gpio_config(void)

中斷函式

void exti9_5_irqhandler(void)                           //外部中斷中斷函式

if(gpio_readinputdatabit ( line2_gpio_port, line2_gpio_pin ))

if(gpio_readinputdatabit ( line3_gpio_port, line3_gpio_pin ))

exti_clearflag(exti_line6); //清除標誌位

} if(exti_getflagstatus(exti_line7) != reset) //檢測中斷標誌位

if(gpio_readinputdatabit ( line2_gpio_port, line2_gpio_pin ))

if(gpio_readinputdatabit ( line3_gpio_port, line3_gpio_pin ))

exti_clearflag(exti_line7); //清除標誌位

} if(exti_getflagstatus(exti_line8) != reset) //檢測中斷標誌位

if(gpio_readinputdatabit ( line2_gpio_port, line2_gpio_pin ))

if(gpio_readinputdatabit ( line3_gpio_port, line3_gpio_pin ))

exti_clearflag(exti_line8); //清除標誌位

} if(exti_getflagstatus(exti_line9) != reset) //檢測中斷標誌位

if(gpio_readinputdatabit ( line2_gpio_port, line2_gpio_pin ))

if(gpio_readinputdatabit ( line3_gpio_port, line3_gpio_pin ))

exti_clearflag(exti_line9); //清除標誌位

} //重置gpio,等待下次中斷

//行置高

gpio_resetbits ( row1_gpio_port, row1_gpio_pin );

gpio_resetbits ( row2_gpio_port, row2_gpio_pin );

gpio_resetbits ( row3_gpio_port, row3_gpio_pin );

gpio_resetbits ( row4_gpio_port, row4_gpio_pin );

//列置高

gpio_setbits ( line1_gpio_port, line1_gpio_pin );

gpio_setbits ( line2_gpio_port, line2_gpio_pin );

gpio_setbits ( line3_gpio_port, line3_gpio_pin );

}

總結

注意地方:1.進入中斷引腳要配置為輸出

2.要加等待按鍵鬆開

STM32(暫存器) 矩陣鍵盤

1 硬體 準備乙個2 2矩陣鍵盤,分別接pb8,9,10,11 2 矩陣鍵盤原理 讓pa8,9輸出高電平,pa10,11輸入 當pa10,11中檢測到高電平時,得到i值。然後翻轉,讓pa8,9輸入,pa10,11輸出高電平 當pa8,9中檢測到高電平時,得到j值 然後通過i,j確定是那個按鍵 3 k...

STM32 矩陣鍵盤的設計實現

專案開發或者日常實驗中有時候需要用到多個按鍵,但微控制器io口資源本身並不多,如果為每乙個按鍵都分配乙個io的話未免太過浪費,所以使用矩陣鍵盤可以盡可能的節省微控制器io口資源。1.系統 windows 2.軟體 keil5 3.微控制器 stm32f103c8t6 矩陣鍵盤與普通的乙個io對應乙個...

STM32外部中斷

一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...