STM32用暫存器點亮LED燈

2021-09-14 04:58:09 字數 785 閱讀 6816

暫存器:實際上就是cpu裡面的東西 每個單元都有不一樣的功能,根據功能給這些儲存單位取別名,這個別名就是我們所說的暫存器。

暫存器的對映:給暫存器分配位址的過程就叫作暫存器的對映。

新建工程:

新建工程需要手動建立main.c

.h(標頭檔案)標頭檔案:暫存器的對映

如何寫暫存器的對映:

首先找到需要控制外設的io口,根據這個io口去暫存器組織架構尋找需要控制外設的io口在**基位址是什麼,然後再看需要控制外設的io口的偏移位址。該io口的位址就是基位址+偏移位址

**埠的位址在編譯器看來只是個位址所以必須強制轉換成指標(*unsigned int)+位址

通過控制io口的高低電平去實現我們想要的功能(通用io口(gpio))

修改暫存器位的操作方法:

//直接操作會把暫存器的32位都操作了,用下面的方法就可以操作你想操作的位

對某位清零,對某幾位清零[a &=~(1<<3)]/[a &=~(3<<2*2)]

對某位進行賦值[a |=(1<<3)]

對某位進行取反[a ^=(1<<3)]

gpio的輸出初始化順序

gpio是輸入、通用輸出、復用功能還是模擬輸入(模式暫存器 moder)

如果是輸出還要確定是推挽輸出還是漏極輸出(輸出型別暫存器 otyper)

配置輸出的速度(輸出速度暫存器 ospeedr)

輸出時要不要開啟上下拉電阻(上拉/下拉暫存器 pupdr)

具體輸出內容(置位復位暫存器bsrr和資料輸出暫存器odr)

//復位就是清零,置位就是置1

STM32點亮LED燈(暫存器版)

點亮r red 紅色燈,將pb5引腳拉低即可。先要找到pb5掛在到哪個時鐘下,stm32系統架構圖 pb5就是gpiob5,從系統架構圖中可以看到gpiob掛在apb2匯流排上,所以先開apb2時鐘。apb2位址是多少呢?可以看出,apb2暫存器的偏移位址為0x18,bit3位設定的是pb,0是di...

STM32蜂鳴器 暫存器

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

STM32暫存器對映

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