STM32之跑馬燈 暫存器版本

2021-10-12 13:51:52 字數 1941 閱讀 4421

簡明步驟:

1、 新建乙個工程檔案,將需要的各個標頭檔案都包含進去(這裡不介紹,會單獨做出筆記)

2、 在工程資料夾中新建乙個資料夾—hardware(名字可任取),然後在其中新建led資料夾。

3、 開啟***.uvprojx 工程檔案,新建led.c和led.h,儲存至led資料夾中。led.c檔案目的是建立乙個函式,使得埠為推挽輸出,並且初始化,而led.**件則是led.c檔案的標頭檔案。

4、將led.**件的路徑新增到hardware-led檔案中(如圖1),將led.c檔案新增到hardware-led檔案中(如圖2)

5、 在led.h中編輯如下**

#ifndef _led_h_

#define _led_h_

void led_init(void);//定義乙個初始化函式

#endif

6、 在led.c中編輯如下**(注釋很重要,有助於小白理解):

7、 在左邊資料夾樹中,找到user,點開main.c檔案輸入如下**

8、 編譯,執行即可

1、#ifndef 是 if not define 的簡寫 作用是:避免多個點c檔案引用乙個標頭檔案時,在編譯時,產生宣告衝突。

因此使用時 一般都是

#ifndef 《標識》// 標識一般是頭檔名全部大寫,且前後加下劃線,.h變成_h

…………

…………

#endif

2、rcc暫存器 (reset and clock control)復位和時鐘控制。配置rcc暫存器就是配置與時鐘相關的那些暫存器。

3、gpio 通用i/o埠 crl是指埠配置低暫存器。gpiob->crl 是指用埠配置低暫存器配置gpiob埠的低8位。

4、推挽輸出電路

推 :經過上面的n型三極體提供電流給負載(rload),這就叫「推」。此時vin 為正,即n型三極體控制端有電流輸入,q3被導通。

挽:經過下面的p型三極體提供電流給負載(rload),這就叫「挽」。此時vin電壓為負,即p型三極體控制端有電流輸入,q4被導通。

對應於i/o埠位的基本電路結構如下(紅框為該推挽電路)

|=:如a|=b等價於a=a|b,即a和b先進行按位或運算,然後把結果賦給a

&=:如a&=b等價於a=a&b,即a和b先進行按位與運算,然後把結果賦給a

<

6、odr暫存器:埠資料輸出暫存器,結合上面的圖,可以看出可以通過控制該暫存器的位,實現輸出控制。

STM32跑馬燈(基於暫存器)

開啟原理圖,不累述。參閱pdf原理圖。複製 庫函式模板 作為建立的空工程。新建乙個分組,hardware,並且在目錄下面也新建乙個目錄,在下面在新建乙個子資料夾叫led,led下面新建led.h和led.c。前面有一模一樣的過程,不在說明 在led.件夾中寫 ifndef led h 如果沒有定義則...

STM32筆記(一)(暫存器) 跑馬燈實驗

stm32的io口可以由軟體配置成一下八種模式 1 輸入浮空 2 輸入上拉 3 輸入下拉 4 模擬輸入 5 開漏輸出 6 推挽輸出 7 推挽式復用功能 8 開漏復用功能 每個io口可以自由程式設計,但io口暫存器必須按照32位字被訪問。stm32的每個io埠都有7 個暫存器來控制,分別是 配置模式的...

STM32跑馬燈實驗

本次跑馬燈實驗主要用到pb6 pb9幾個埠 include led.h void led init void 自定義led燈初始化函式 標頭檔案中主要是一些巨集定義和位帶操作 ifndef led h define led h include stm32f10x.h define led1 on g...