STM32用寄存器點亮LED燈

寄存器:實際上就是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的輸出初始化順序

  1. GPIO是輸入、通用輸出、複用功能還是模擬輸入(模式寄存器 MODER)
  2. 如果是輸出還要確定是推輓輸出還是漏極輸出(輸出類型寄存器 OTYPER)
  3. 配置輸出的速度(輸出速度寄存器 OSPEEDR)
  4. 輸出時要不要開啓上下拉電阻(上拉/下拉寄存器 PUPDR)
  5. 具體輸出內容(置位復位寄存器BSRR和數據輸出寄存器ODR)
    //復位就是清零,置位就是置1

用寄存器點亮LED燈:
(查手冊,看地址:
GPIOH 基地址爲0x4002 1C00
GPIOH的外設時鐘RCC基地址爲0x40023800)
1.查看原理圖
在這裏插入圖片描述2.STM32中的每個外設時鐘都是關閉的,由RCC統一控制
RCC_AHB1ENR地址爲(0x40023800 +0X30)
控制GPIOH的外設時鐘在第七位
爲1時使能
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述3. STM32和STC89C51單片機不一樣。STM32還需控制IO口,定義XX爲輸出端口
有一個MODER寄存器(模式寄存器)控制io的輸入或者是輸出
GPIOH_MODER地址(0x40021C00+0x00)
選擇00通用輸出模式
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述4. 確定輸出類型(OTYPER)
//推輓輸出
輸出1
GPIOH_OTYPER 地址(0x4002 1C00+0x4)
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
5.配置輸出速度(OSPEEDR)
//配置輸出速度爲2M
輸出00
GPIOH_OSPEEDR地址(0x4002 1C00+0x08)
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
6.輸出要不要上拉電阻
//不要上拉電阻
輸出00
地址(0x4002 1C00+0x0C)
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述7. 讓PH10輸出低電平,點亮led燈(也可以通過控制GPIO端口置位/復位寄存器下次再寫)
地址(0x4002 1C00+0x14)
在這裏插入圖片描述在這裏插入圖片描述————————————————————————————————————————————————————————————————————
點亮其他燈和點亮紅燈的方法一樣的
點亮一綠燈的代碼如下:
在這裏插入圖片描述流水燈
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章