基於stm32f103的矩陣鍵盤

2021-06-27 10:04:04 字數 1166 閱讀 7704

我現在的任務是做乙個8*8的矩陣鍵盤,制pcb版之前,我用電路板搭了乙個3*3的矩陣鍵盤來模擬一下,設定pa0、pa1、pa2為pp輸出,設定p3、p4、p5下拉輸入。大多數的晶元內部上拉或下拉電阻都是弱上拉或弱下拉,stm32f103的內部也一樣,內部上拉或下拉的電阻阻值約為40k,這樣可以方便外部調整,但是,在作為一些通訊引腳時,可能會出現上電時資料不穩定的問題,如i2c通訊,解決的辦法是在外部在加上乙個較強的上拉或下拉即可。具體程式如下:

#include

#include "usart.h"

void keyboard_init(void)//按鍵初始化

void delay(u32 ncount)//延時函式

u8 keydown(void)

else return 0;

}u8 read_keyvalue(void)   

gpio_setbits(gpioa,gpio_pin_1);

gpio_resetbits(gpioa,gpio_pin_0|gpio_pin_2);

switch(gpio_readinputdata(gpioa)&0xff)

gpio_setbits(gpioa,gpio_pin_2);

gpio_resetbits(gpioa,gpio_pin_0|gpio_pin_1);

switch(gpio_readinputdata(gpioa)&0xff)

gpio_setbits(gpioa,gpio_pin_0|gpio_pin_1|gpio_pin_2);

gpio_resetbits(gpioa,gpio_pin_3|gpio_pin_4|gpio_pin_5|gpio_pin_6|gpio_pin_7);

while((gpio_readinputdata(gpioa)&0xff)!=0x07);

printf("%c",keyvalue);

return keyvalue;

}int scankeyboard(void)

else 

}return 0;

}int main(void)

}用串列埠觀察實驗結果還可以,但個別時候會同時列印出按鍵字母和「nothing」,我感覺可能是焊接的問題,元器件接觸不良很有可能造成這種結果,具體等pcb板回來再測量。

若以上程式或說明有什麼不對的地方,還望指正,謝謝。

基於stm32f103的火箭車

申明一下 忘了在哪兒買的,今天突然看見,就發出來吧,有需要的自取。遠端遙控採用網際網路wifi控制方案,由上位機軟體下達指令通過網際網路wifi將資料傳給下位機進而做出相應動作。上位機由 wifi機械人網 提供,下位機採用stm32f103z微控制器作為處理資料並執行相應指令的平台。小車由6部分組成...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...