LED跑馬燈 暫存器

2021-07-22 08:28:42 字數 2935 閱讀 8476

輸入浮空

輸入上拉

輸入下拉

模擬輸入

開漏輸出

開漏復用輸出

推挽輸出

推挽復用輸出

2mhz 

10mhz

50mhz

每組gpio共16個io口,含下7個暫存器

gpiox_crl  : 埠配置低暫存器

gpiox_crh : 埠配置高暫存器

gpiox_idr : 埠輸入暫存器

gpiox_odr : 埠輸出暫存器

gpiox_bsrr : 埠位設定/清除暫存器

gpiox_brr : 埠位清除暫存器

gpiox_lckr : 埠配置鎖存暫存器

連線方式:

led0連線pb5引腳

led1連線pe5引腳

1,使能gpio時鐘

2,初始化io口工作模式

配置暫存器:gpiox_crh/crl

3,操作io口輸出高低電平

配置暫存器gpio_odr或gpio_brr

使能gpiob時鐘:

使能gpioe時鐘:

stm32f10x.h找到rcc_typedef結構體宣告:

typedef

struct

rcc_typedef;

再找到結構體指標rcc:

#define rcc                 ((rcc_typedef *) rcc_base)
接下來我們需要操作rcc_typedef結構體下apb2enr暫存器的第3位(gpiob)和第6位(gpioe)使能

這裡為了修改apb2enr第3位和第6位而不影響其他位的值,我們採用」|」(或)運算(有乙個是1結果就為1)

使能gpiob和gpioe我們需要將apb2enr暫存器第3位和第6位賦值為1

使能gpiob: rcc->apb2enr|=1<<3;

使能gpioe: rcc->apb2enr|=1<<6;

每組gpio有16個io口,gpiox_crl配置0-7位,gpiox_crh配置8-15位

所以配置pb5和pe5需要操作gpio_crl暫存器

每個io口由4個位控制,gpiox_crl的32個位控制8個io口

led跑馬燈需要設定io為推挽輸出

所以我們需要將gpiox.5的cnf5設定為00,mode5設定為11 , 0011的16進製制值為3

// 配置gpiox.5配置為輸出速度50mhz的推挽輸出

gpiob->crl&=0xff0fffff; // 乙個f代表4位,我們將20-23位(gpiox.5)清空為0

gpiob->crl|=0x00300000; // 不影響其他位,將20-24位值設定為0011(16進製為3)

我們的led為低電平點亮,高電平熄滅,所以初始化應設定為熄滅狀態,設定io口輸入為高電平

需要操作ord或brr暫存器,我們以odr暫存器為例:

我們要將pb5或pe5的輸出電平設定為1,需要設定第五位odr5值為1:

gpiob->odr|=1

<<5; // 在不影響其他位的情況下,將odr5賦值為1

新建led標頭檔案:haerware->led->led.h 定義led初始化函式

#ifndef __led_h

#define __led_h

void led_init(void);

#endif

新建:haerware->led->led.c 實現led初始化函式

#include "led.h"

#include "stm32f10x.h"

void led_init(void)

user->main.c 主函式編寫led跑馬燈**

#include "stm32f10x.h"

#include "delay.h"

#include "led.h"

int main(void)

}

跑馬燈實驗 暫存器版

1 參考資料 stm32f1開發指南 暫存器 第六章 跑馬燈實驗6.1小節 stm32中文參考手冊 v10 8.2 gpio暫存器描述 7.3.7 apb2外設時鐘使能暫存器 rcc apb2enr 2 編寫步驟 使能io口時鐘。配置暫存器rcc apb2enr。初始化io口模式。配置暫存器gpio...

LED跑馬燈效果

這個led跑馬燈的效果是怎麼乙個原理,現分析如下 假設有乙個要進行變化的物件陣列,我們稱之為a物件。如下 這個等變化的陣列長度為5,有顏色陣列,我們稱之為b,如下 這個長度為3。要分析出原理,我們要根據事物的表象去分析得到事物內在的規律與原理,根據這個原理與規律我們才能得出解決辦法。我們進行一次模擬...

LED跑馬燈實驗

一 新建工程並新增相應的工程檔案 本實驗需要用到三個韌體庫檔案,分別為stm32f4xx gpio.c stm32f4xx gpio.h stm32f4xx rcc.c stm32f4xx rcc.h misc.c misc.h 二 編寫使用者驅動 1 編寫c檔案 a.使能gpio時鐘,根據電路原理...