stm32 按鍵(庫函式版)

2021-09-25 10:48:18 字數 2317 閱讀 2320

不得不說程序太慢了

感覺很慌 但是幹什麼事情又非常的從容

學的很慢學著學著發現 不止是要學新東西 那些 以前早該知道的東西也忘了好多

還有 一定一定要好好學習 擴充套件知識面 什麼東西都一定要學精

因為知識的封鎖真的真的很可怕 很可怕 所以一定多學習 多動手 要加油

終於可以看這個的重點了 按鍵

就好像遙控器 當按下換頻道的鍵時候我們一直按會一直換

但是 當按下電源鍵的時候 即使一直按也只會開關一次而不會一直開關 知道鬆開之後再次按下 才會起作用

所以按鍵分為支援連續按和不支援連續按

首先支援連續按  

注意此函式有響應優先順序,key0>key1>key_up!!

u8 key_scan(u8 mode)

else if(key1 == 1 && key0 == 1 && wk_up == 0)

return 0; //沒有按鍵按下 返回無效值

}

如果不支援連續按

注意此函式有響應優先順序,key0>key1>key_up!!

u8 key_scan(u8 mode)

else if(key1 == 1 && key0 == 1 && wk_up == 0)

key_up = 1;

return 0;

}

當兩個函式合併時

u8 key_scan(u8 mode)

else if(key1 == 1 && key0 == 1 && wk_up == 0)

key_up = 1;

return 0;

}

所以key的相關函式其實已經差不多說完了

接下來就把 key.c /key,h/ main.c寫一下(因為led和蜂鳴器之前已經寫過了, 這就不在寫了)

按鍵處理函式

返回按鍵值

mode:0,不支援連續按;1,支援連續按;

0,沒有任何按鍵按下

1,key0按下

2,key1按下

3,key3按下 wk_up

注意此函式有響應優先順序,key0>key1>key_up!!

#include "key.h"

#include "delay.h"

void key_init(void)

u8 key_scan(u8 mode)

else if(key1 == 1 && key0 == 1 && wk_up == 0)

key_up = 1;

return 0;

}

#ifndef _key_h

#define _key_h

#include "sys.h"

#define key0 gpio_readinputdatabit(gpioe, gpio_pin_4)

#define key1 gpio_readinputdatabit(gpioe, gpio_pin_3)

#define wk_up gpio_readinputdatabit(gpioa, gpio_pin_0)

#define key0_pres 1 //key0 anxia

#define key1_pres 2 //key1 anxia

#define wkup_pres 3 //key_up anxia

void key_init(void);

#endif

#include "stm32f10x.h"

#include "led.h"

#include "beef.h"

#include "key.h"

#include "sys.h"

#include "delay.h"

int main(void)

} else

delay_ms(10);

} }

其中有一點吧,main函式的那個vu8, 反正我第一眼看的時候不知道是怎麼回事:

u8是無符號字元型,vu8是volatile unsigned char的型別,前者很容易理解,後者的話是為了防止編譯器將你定義的變數自動優化掉,以防出現未知情況。一般普通變數都可不加volatile,但是在中斷裡面所需要執行的變數需要加volatile。

加油呀!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

(資源源於正點原子)

STM32 實現PWM 庫函式版

tim1和tim7沒有pwm輸出 tim0和tim8 有七路pwm輸出 27 14 通用定時器 都有4個 pwm 44 16 一共有30個pwm輸出 圖中,我們假定定時器工作在向上計數 pwm 模式,且當 cnt ccrx 時輸出 1。那麼就可以得到如上的 pwm示意圖 當 cnt 值小於 ccrx...

STM32實現待機喚醒 庫函式版

很多微控制器都有低功耗模式,stm32 也不例外。在系統或電源復位以後,微控制器處於運 行狀態。執行狀態下的 hclk 為 cpu 提供時鐘,核心執行程式 當 cpu 不需繼續執行時,可以利用多個低功耗模式來節省功耗,例如等待某個外部事件時。使用者需要根據最低電源消耗,最快速啟動時間和可用的喚醒源等...

stm32 工業按鍵檢測 STM32按鍵的檢測

stm32的按鍵檢測相對比較簡單,首先按部就班的初始化連線的到的i o,然後寫乙個按鍵掃瞄函式,這個和51微控制器的差不多。以下是乙個比較典型的例子 利用按鍵控制led key.件 ifndef key h define key h include sys.h definekey0 gpio rea...