**
巨集定義
//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可支援...