文章目錄
- 前言
- GPIO操作方法
- led原理圖
- 設置時鐘
- APB的概念
- 設置APB
- 設置輸出引腳
- 設置引腳高低電平寄存器
- 尋找寄存器地址
- 總結
前言
STM32是STMicroelectronics(意法半導體)公司的一款32位Flash微控制器產品,基于ARM Cortex?-M內核。STM32系列微控制器在工業控制、商業應用等領域得到了廣泛的應用。本文將介紹如何使用STM32的ARM架構操作寄存器來控制LED。
在嵌入式系統中,LED常常被用作簡單的顯示設備,可以用來指示系統的狀態、運行情況等。在STM32中,我們可以通過操作GPIO(General Purpose Input/Output,通用輸入輸出)寄存器來控制LED的亮滅。
GPIO操作方法
led原理圖
這個是我的原理圖:
我現在需要操作PB5,所以我們需要去設置他
我們需要查看芯片手冊,我們才能去設置他
設置時鐘
APB的概念
STM32微控制器中的APB(Advanced Peripheral Bus,高級外設總線)主要用于低帶寬的周邊外設之間的連接,例如UART、I2C等。在STM32中,APB又可以分為APB1和APB2。
-
APB1:APB1是低速總線,最高支持42MHz的頻率。它主要負責DA,USB,SPI,I2C,CAN,串口2345,以及普通的定時器。
-
APB2:相比之下,APB2是高速總線,最高支持84MHz的頻率。它主要負責AD,I/O,高級的定時器,以及串口1。
另外,如果所在總線(APB1/APB2)的分頻系數為1,那么就不倍頻,如果不為1(比如2/4/8/16),那么就會2倍頻后,作為定時器時鐘輸入。
設置APB
我們需要操作的是GPIO,所以我們需要設置APB2
我們可以看到IPPB EN這個寄存器,這個就是我們需要操作的
他的取值:
1表示使能。他是全部使能的,使能了他,GPIOB的其余所有引腳都被使能了
設置輸出引腳
這里是配置某個引腳的寄存器數據手冊,low表示0~7號引腳,共8個
在 STM32 微控制器的 GPIO 配置中,CNFy[1:0]
和 MODEy[1:0]
是用來配置 GPIO 引腳的寄存器位。
-
CNFy[1:0]
(Port x configuration bits) 是用來配置對應的 I/O 口的工作模式的。具體的配置取決于MODEy[1:0]
的設置:- 當
MODEy[1:0]=00
(輸入模式) 時:00
: 模擬模式01
: 浮空輸入(復位狀態)10
: 帶上拉/下拉的輸入11
: 保留
- 當
MODEy[1:0] > 00
(輸出模式) 時:00
: 通用推挽輸出01
: 通用開漏輸出10
: 復用推挽輸出11
: 復用開漏輸出
- 當
-
MODEy[1:0]
(Port x mode bits) 是用來配置對應的 I/O 口的工作速率的:00
: 輸入模式(復位狀態)01
: 輸出模式,最大速度 10 MHz10
: 輸出模式,最大速度 2 MHz11
: 輸出模式,最大速度 50 MHz
設置引腳高低電平寄存器
這里可以設置某一組的高低電平,我們可以先讀出來,然后修改,再寫入,這樣就可以設置對應的高低電平了:
這樣是比較低效的,STM32他提供了set/reset寄存器:
其中BSy就是設置,BRy清除
我們通過設置他們為1還是0就可以控制他們是有效還是無效
尋找寄存器地址
比如以RCC APB2地址為例子:
RCC為0x4002 1000
為基地址,再+0x18
為他的完整地址
總結
通過本文,我們了解了如何使用STM32的ARM架構操作寄存器來控制LED。雖然這只是STM32強大功能的冰山一角,但是通過掌握這些基礎知識,我們可以進一步探索STM32的其他功能,如串口通信、定時器控制等。希望本文能為你在STM32編程的道路上提供一些幫助和啟發。在實際應用中,你可能需要根據具體的硬件設備和需求進行一些調整和優化。