//pa0 wk_up 即 key_up
#define key0_pres 1
//key0 按下
#define key1_pres 2
//key1 按下
#define key2_pres 3
//key2 按下
#define wkup_pres 4
//key_up 按下(即 wk_up/key_up)
void
key_init
(void);
//io 初始化
u8 key_scan
(u8)
;//按鍵掃瞄函式
#endif
這裡使用的是位帶操作來實現讀取某個 io 口的 1 個位的。
key0_pres / key1_pres/ key2_pres/wkup_press 等 4個巨集定義,分別對應開發板四個按鍵(key0/key1/key2/ key_up)按鍵按下時 key_scan返回的值。
#include
"key.h"
#include
"delay.h"
//按鍵初始化函式
void
key_init
(void
)//按鍵處理函式
//返回按鍵值
//mode:0,不支援連續按;1,支援連續按;
//0,沒有任何按鍵按下
//1, key0 按下
//2, key1 按下
//3, key2 按下
//4, key3 按下 wk_up
//注意此函式有響應優先順序,key0>key1>key2>key3!!
u8 key_scan
(u8 mode)
else
if(key0==
1&&key1==
1&&key2==
1&&wk_up==0)
key_up=1;
return0;
// 無按鍵按下
}
key_scan 函式, 支援兩種掃瞄方式,通過 mode 引數來設定。
#include
"sys.h"
#include
"delay.h"
#include
"led.h"
#include
"beep.h"
#include
"key.h"
intmain
(void)}
else
delay_ms(10
);}}
02 原子戰艦 蜂鳴器實驗(暫存器)
蜂鳴器的驅動訊號連線在 stm32f1 的 pb8 上。我們這裡通過位帶操作來實現某個 io 口的輸出控制,beep 就直接代表了 pb8 的輸出狀態。我們只需要令 beep 1,就可以讓蜂鳴器發聲。ifndef beep h define beep h include sys.h define b...
彙編03 暫存器
乙個cpu由以下幾個部分組成 1 運算器 負責資訊處理 2 暫存器 進行資訊儲存 3 控制器 控制各種器件進行工作 4 內部匯流排 連線各種器件 外部匯流排實現cpu和主機板其他部件的聯絡 8086cpu的所有暫存器都是16位的,可以存放兩個位元組,ax bx cx dx這4個暫存器通常用來存放一般...
crh暫存器 實驗 使用暫存器點亮LED
埠配置高暫存器後面的英文就是暫存器名稱可參考參考手冊,然後x可以為a e也就是適用gpuoa gpioe埠這樣的乙個暫存器。位址偏移,就是本暫存器相對這個外設基位址的偏移 暫存器位表 表示0 31位名稱及許可權,表上方的數字位編號,中間位位名稱,下方位讀寫許可權,w表示寫,r表示讀 位功能,如表所描...