STM32(暫存器) 矩陣鍵盤

2021-10-09 10:15:27 字數 1481 閱讀 8808

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;keyboard.c函式實現;

在這裡插入**片

#include

"keyboard.h"

#include

"stm32f10x.h"

#include

"delay.h"

#include

"usart.h"

#include

"led.h"

u8 key_scan

(void

)else

//同上

gpiob->crh &

=0xffff0000

; gpiob->crh |

=0x00008833

; gpiob->odr &=~

(1<<10)

; gpiob->odr &=~

(1<<11)

; gpiob->odr &=~

(1<<8)

; gpiob->odr &=~

(1<<9)

;pbout(8

)=1;

pbout(9

)=1;

pbin(10

)=0;

pbin(11

)=0;

if(pbin(10

)==1||

pbin(11

)==1)

else

return0;

//通過i,j值確定按鍵位置

if(i==

1&& j==1)

return1;

else

if(i==

1&& j==2)

return2;

else

if(i==

2&& j==1)

return3;

else

if(i==

2&& j==2)

return4;

else

return0;

}

4:keyboard.h函式實現;

在這裡插入**片

#ifndef _keyboard_h_

#define _keyboard_h_

#include

"sys.h"

u8 key_scan

(void);

#endif

5:主函式實現;

在這裡插入**片

intmain

(void)}

}

如有錯誤請指正!!!

STM32蜂鳴器 暫存器

這次實驗犯了個笑話,竟然在巨集定義後面加分號.就像這樣 define 大家千萬不要學我,結果報錯expected expression,還苦惱半天,想為啥操作不了暫存器了?我真愚蠢!剛開始我也不會寫這些東西,其實摸清套路就好,rcc時鐘使能 gpio初始化 相關暫存器初始化 延時函式 串列埠等初始化...

STM32暫存器對映

1.對映即將記憶體的某段位址與某一暫存器對應,微控制器對函式的操作底層是操作暫存器,而暫存器最終是操作記憶體上對應的單元,2.各個暫存器對應的位址都是在st定義的起始位址上層層偏移得到 3.想要實現某功能可直接對此段記憶體寫進相應的值,即可賦予某一功能 4.stm32底層實際是先定義出外設基位址,然...

STM32之暫存器開發

首先克服心理作用,不要總是預設暫存器開發難,其實暫存器開發和庫函式開發所用的方法和難度是一樣的,並不難,下面用以stm32為例解釋。1.明確自己需要的功能 庫函式開發也需要 2.檢視手冊,找到功能對應的微控制器資源 3.找到功能所需暫存器 庫函式開發需要找到相應的功能函式 4.根據位址每位對應的功能...