STM32點亮LED燈(暫存器版)

2021-10-22 18:08:24 字數 1578 閱讀 1813

點亮r(red)紅色燈,將pb5引腳拉低即可。

先要找到pb5掛在到哪個時鐘下,stm32系統架構圖:

pb5就是gpiob5,從系統架構圖中可以看到gpiob掛在apb2匯流排上,所以先開apb2時鐘。apb2位址是多少呢?

可以看出,apb2暫存器的偏移位址為0x18,bit3位設定的是pb,0是disable,1是enable; 那麼暫存器的基位址是多少呢?

繼續查詢手冊apb2屬於rcc,所以需要查詢到暫存器對映3.3章如下:

從暫存器**中可以看到,暫存器rcc的基位址為0x4002 1000。

所以暫存器的apb2的位址為:0x40021000 + 0x18=0x40021018

gpiob暫存器位址偏移位址為0x00,基位址從手冊3.3章查詢到

0x4001 0c00 - 0x4001 0fff gpio port b

從**中看到,gpiox_crl的暫存器(x=a…g),cnfy,modey (y=1…7) 每4個位控制一組gpioy引腳。因為每組gpiox有16個引腳。16*4=64,所以控制暫存器需要64位。但是乙個暫存器是32位,所以需要兩個暫存器。故分為crl 控制1-7引腳,crh控制8-16引腳。因為pb5是第5個所以選擇crl暫存器。

modey設定輸入輸出模式,gpio速率

cnfy在輸入模式下的配置和輸出模式下的配置

在這裡我們把 pb0 配置為通用推挽輸出,輸出的速度為 10m

暫存器偏移位址 0x0c。,基位址從手冊3.3章查詢到

0x4001 0c00 - 0x4001 0fff gpio port b

低16位有效,將對應的引腳設定0(拉低),或者1(拉高)

pb5引腳需要將bit5設定成0,即可點亮led

#include "stm32f10x.h"

int main (void)

注:位址不能直接賦值,需要轉化為指標形

STM32用暫存器點亮LED燈

暫存器 實際上就是cpu裡面的東西 每個單元都有不一樣的功能,根據功能給這些儲存單位取別名,這個別名就是我們所說的暫存器。暫存器的對映 給暫存器分配位址的過程就叫作暫存器的對映。新建工程 新建工程需要手動建立main.c h 標頭檔案 標頭檔案 暫存器的對映 如何寫暫存器的對映 首先找到需要控制外設...

STM32學習心得 二 點亮LED燈

stm32學習心得 二 點亮led燈 在建立好工程模板後,就可以開始真正進入stm32的學習。手下那當然是試著點亮乙個led燈。首先在user目錄下建立乙個空資料夾,並命名為bsp led bsp的意思是板級支援包,即該 僅支援這塊板子 進去資料夾,新建兩個檔案,分別是bsp led.c以及bsp ...

STM32從零開始(二) 點亮led燈

先看標頭檔案 ifndef gpio led72mhz define gpio led72mhz define gpiob base 0x40010c00 define gpiob crh gpiob base 0x04 define gpiob odr gpiob base 0x0c define...