我現在的任務是做乙個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...