STM32F103 按鍵控制流水燈方向

2021-08-14 10:30:58 字數 2308 閱讀 5845

/*stm32庫標頭檔案*/

#include "stm32f10x_gpio.h"

#include "stm32f10x_rcc.h"

#include "stm32f10x.h"

#include "core_cm3.h"

#include "misc.h"

gpio口的設定,還有巨集的定義
#define led0    gpio_pin_8

#define led1 gpio_pin_9

#define led2 gpio_pin_10

#define led3 gpio_pin_11

#define led4 gpio_pin_12

#define led5 gpio_pin_13

#define led6 gpio_pin_14

#define led7 gpio_pin_15

#define led_all (led0 | led1 | led2 | led3 | led4 | led5 | led6 | led7)

#define led_port gpioc

#define n_le gpio_pin_2

#define n_le_port gpiod

#define swn 4

#define n_k1 gpio_pin_0

#define n_k2 gpio_pin_8

#define n_k3 gpio_pin_1

#define n_k4 gpio_pin_2

#define n_k1c gpioa

#define n_k2c gpioa

#define n_k3c gpiob

#define n_k4c gpiob

/*巨集*/

#define led_out(x) gpio_setbits(led_port,led_all), \

gpio_resetbits(led_port, x<<8), \

gpio_setbits(n_le_port,n_le), \

gpio_resetbits(n_le_port,n_le)

定義陣列和一些標記
typedef enum

y_bool;

static y_bool led_t = true; //發光標記

static y_bool rl = true; //左移右移標記

static y_bool key_t = false; //按鍵的檢測

void systeminit()

/*主函式*/int main()

if(key_t)

if(key_dn)}}

void init()//gpio口的初始化

//systick 中斷

void systick_handler()    

/*led顯示*/

void led()

else

}

/*按鍵檢測函式*/

uint8_t key_c()

; //各個按鍵的引腳

const gpio_typedef* key_port[swn] = ;//各個按鍵的埠

for(key_n = 0, i = 0; i < swn; i++)//當按鍵按下賦值到key_n中

x = (key_n ^ key_o) & key_o;//檢測有無按鍵按下

key_o = key_n;//與下一次值比較

return x;

}

//按鍵的處理
void key_d(uint8_t x)

/*剛剛入手學習stm32有不足之處,望大家指出*/

STM32F103實驗二 按鍵控制LED亮滅

基於正點原子mini板的程式設計,完成按鍵控制led的功能。在stm32f103實驗一 點亮led燈的基礎下 已經建立好led.h和led.c檔案 新增標頭檔案key.h和原始檔key.c到hardware資料夾下。3.1編寫key.件 ifndef key h define key h inclu...

stm32f103實現流水燈(hal庫)

void led init void gpio埠時鐘使能 hal rcc gpioe clk enable hal rcc gpiob clk enable 配置gpio引腳輸出電平 預設關燈 hal gpio writepin gpioe,gpio pin 5,gpio pin set hal g...

STM32F103入門 10 按鍵實驗(上)

之前的點亮小燈實驗用到了gpio的輸出模式,但是對於輸入模式沒有用到,這次小r給小夥伴們介紹gpio的其中一種輸入模式 上拉輸入。按鍵出現在很多的應用場景,按鍵處理更是一門學問。因此,小r給小夥伴們介紹gpio的上拉輸入模式並簡單應用於按鍵實驗中,通過判斷按鍵的狀態來控制led燈的亮滅情況。首先,需...