stm32 暫存器操作一看就會

2021-08-19 15:00:33 字數 1293 閱讀 8852

1. 暫存器是什麼?

我的總結:在嵌入式裡面暫存器非常非常重要重,就是實現軟硬體的介面,幾乎所有的功能操作都是通過操作暫存器來實現的。

2. 暫存器操作,點亮一盞led燈。

以stm32f103為例,點亮pb8控制的led燈,pb8輸出高電平led燈亮,輸入低電平led滅。

檢視參考手冊,一定學會閱讀手冊。

操作分為四步。

第一步 開啟外設時鐘使能暫存器,當外設時鐘沒有啟用時,軟體不能讀寫外設暫存器數值。返回值始終為0x00.

第二步 配置引腳工作模式,推挽輸出。

第三步就是控制引腳電平輸出。檢視手冊暫存器的odr和bsrr(brr只能清楚暫存器)都可以控制輸出。相對來說控制bsrr更快一點,因為控制bsrr是直接寫暫存器,而控制odr需要先讀出暫存器,然後操作後,再寫入暫存器。

第四步,最後一步,檢視儲存映像圖結合上面圖中的偏移位址,准去的找到暫存器的位址。

接下來讓我們用**實現,點亮一張led燈。

/*定義暫存器,三個暫存器,時鐘rcc_apb2enr,配置gpiob_crh,輸出gpiob_bsrr

*/#define   rcc_apb2enr   *((volatile unsigned int *) (0x40021000 + 0x18))

#define   gpiob_crh        *((volatile unsigned int *) (0x40010c00 + 0x04))

#define  gpiob_bsrr      

*((volatile unsigned int *) (0x40010c00 + 0x10))

int  main(void)

return 0;

}注: 第一次寫這個,若有不對的地方,請斧正。

STM32蜂鳴器 暫存器

這次實驗犯了個笑話,竟然在巨集定義後面加分號.就像這樣 define 大家千萬不要學我,結果報錯expected expression,還苦惱半天,想為啥操作不了暫存器了?我真愚蠢!剛開始我也不會寫這些東西,其實摸清套路就好,rcc時鐘使能 gpio初始化 相關暫存器初始化 延時函式 串列埠等初始化...

STM32暫存器對映

1.對映即將記憶體的某段位址與某一暫存器對應,微控制器對函式的操作底層是操作暫存器,而暫存器最終是操作記憶體上對應的單元,2.各個暫存器對應的位址都是在st定義的起始位址上層層偏移得到 3.想要實現某功能可直接對此段記憶體寫進相應的值,即可賦予某一功能 4.stm32底層實際是先定義出外設基位址,然...

STM32之暫存器開發

首先克服心理作用,不要總是預設暫存器開發難,其實暫存器開發和庫函式開發所用的方法和難度是一樣的,並不難,下面用以stm32為例解釋。1.明確自己需要的功能 庫函式開發也需要 2.檢視手冊,找到功能對應的微控制器資源 3.找到功能所需暫存器 庫函式開發需要找到相應的功能函式 4.根據位址每位對應的功能...