暫存器:實際上就是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底層實際是先定義出外設基位址,然...