STM32的LED燈實驗

2021-07-08 20:18:07 字數 2058 閱讀 7473

實驗目的:

讓我的開發板的led燈亮滅閃爍

實驗程式:

/*******************************led.c*********************************/

#include "stm32f4xx.h" //在system目錄下可以找到,把st官方的部分庫抽取出來,組成了乙個system目錄

#include "sys.h"

void led_init(void)

/********************************led.h********************************/

#ifndef _led_h

#define _led_h

void led_init(void);

#endif

/********************************test.c********************************/

#include "sys.h"

#include "delay.h"

#include "led.h"

int main(void)

}

實驗分析:1.在以後的每個實驗中,我們都會用到了st官方提供的啟動檔案:startup_stm32f40_41***.s

這個檔案的作用就是設定棧等一系列,然後轉去執行我們test.c中的main函式。這樣我們就不用

手動再去寫這樣乙個啟動檔案了。

2.在main函式中,我們用到了stm32_clock_init()和delay_init()函式,這兩個函式是通過暫存器的配置來完成的。

stm32_clock_init()裡邊是進行了一些系統時鐘的設定。delay_init()函式的作用是初始化延遲函式,方便下邊,

我們後邊直接呼叫delay_ms()函式來完成延遲的功能,這些都是封裝好了的,方便我們直接呼叫。在這個工程中,

我們把一些封裝了的東西統一放在了system目錄下,仔細檢視,會發現其實其底層的操作與arm9操作類似。

3.在stm32中,我們操作硬體有兩種方法:

第一種是通過st官方提供的庫函式來操作

第二種是通過操作暫存器來達到我們的目的

其實話說回來,st官方提供的庫函式,進去裡邊看,我們實際也可以看到,

其只是封裝了一層,其本質也是操作暫存器,只是直接方便使用者呼叫,方便快捷,

但是在學習階段,個人建議還是操作暫存器。暫存器會了,原理你也就懂了,然後操作

庫函式只是分分鐘的事。

4.cortex m4 的 gpio的基本機構

5.推挽輸出和開漏輸出

推挽輸出:可以輸出強高低電平;

開漏輸出:只可以輸出強低電平,高電平得靠外部電阻拉高;

注意事項:

1.在操作gpio等外設時,首先要做的一步是使能你對應要操作的外設的時鐘,

這一點與arm9有一定的區別。

2.在設定gpio為推挽上拉輸出時,其預設電平那麼就是高電平,但是若不在led_init()中,

強制將引腳拉高,那麼led燈還是會亮(會亮說明此引腳預設為低),這點沒大想明白。

小結 stm32 驅動LED燈

使用位帶操作,位帶操作就是把每個位元膨脹成乙個32位的字,當訪問這些字的時候就訪問這些位元位。然後,埠使能 pb5 pe5 led io void led init void gpio setbits gpiob,gpio pin 5 這個必須要寫,取位址。gpio setbits gpiob,gp...

stm32實現LED燈亮滅

wangxl 20180808 本章中,不特殊說明都以st m32f103 vet6 為例,軟體平台為 iar6.4 通過檢視原理圖,我們的 led指示燈配置在pb8 pb9管腳上,通過配置 gpiob時鐘及引腳 來控制指示燈的亮滅。學會檢視原理圖 理解stm32埠配置 學會操作使用 iar程式設計...

STM32 點燈實驗

2018 3 29 stm32 1.說在前面 在配置完template之後,今天算是正式進入了stm32的世界,初步了解stm32有著浩如煙海的資料和庫函式,所以,學習32程式設計有著兩種方向,第一是建立在操作庫函式的基礎上,第二是建立在操作暫存器的基礎上 實際上,庫函式就是封裝了一些對暫存器的用法...