STM32 GPIO 流水燈例程 學習總結

2021-08-04 02:51:54 字數 2439 閱讀 6059

通過控制led燈,熟悉stm32的儲存器結構、位址對映、時鐘樹、庫檔案、利用庫的方法及開發工程的步驟,建立stm32的開發思想。

這是我建立的第乙個工程,由於涉及面較廣,知識點分散,在此做乙個總結。

1)為控制led燈,知道要使用gpio外設。

gpio(general-purpose i/o):i/o引腳可以被軟體設定成各種不同的功能,如輸入或輸出。控制led燈,即控制stm32晶元的i/o引腳電平的高低來實現。

2)了解gpio外設有什麼功能,要如何使用。

gpio引腳又被分為gpioa、gpiob、...、gpiog不同的組,每組埠分為0~15共16個不同的引腳,對於不同型號的晶元,埠的組和引腳的數量不同。

功能檢視參考手冊

3)獲知gpio的位址對映,知道它所掛載的匯流排apb2。

4)了解st官方庫對暫存器的封裝。

5)了解時鐘樹,檢視gpioc的時鐘**,即pclk2。

6)在stm32f10x_conf.h檔案中包含用到的標頭檔案stm32f10x_gpio.h、stm32f10x_rcc.h。

7)在工程模板的基礎上新增led.c、led.h使用者檔案。

8)編寫驅動初始化函式led_gpio_config()。

9)開啟外設gpioc時鐘,分析由systeminit()函式配置的預設的sysclk=71mhz的時鐘頻率是否符合工程要求。

10)根據控制要求,定義並填充初始化結構體gpio_initstructure,向相應的結構體成員寫入適當的引數。

11)呼叫初始化函式gpio_init()初始化gpioc。

12)編寫相應的led.h標頭檔案。

13)編寫main應用程式。

14)除錯程式、完成。

我建的工程:

奮鬥stm32開發板v5原理圖

/*led.h*/

#ifndef __led_h

#define __led_h

#include "stm32f10x.h"

#define on 0

#define off 1

#define led1(a) if(a) \

gpio_setbits(gpiod,gpio_pin_3);\

else \

gpio_resetbits(gpiod,gpio_pin_3)

#define led2(a) if(a) \

gpio_setbits(gpiod,gpio_pin_6);\

else \

gpio_resetbits(gpiod,gpio_pin_6)

#define led3(a) if(a) \

gpio_setbits(gpiob,gpio_pin_5);\

else \

gpio_resetbits(gpiob,gpio_pin_5)

void led_gpio_config(void);

#endif /*__led_h*/

/*led.c*/

#include "led.h"

/*配置led用到的i/o口*/

void led_gpio_config(void)

/*main.c*/

#include "stm32f10x.h"

#include "led.h"

void delay(__io u32 ncount);

int main (void)

以上**在奮鬥stm32上課執行,以下是推薦範例,用來對比找出自己的不足。

/*範例*/

#include"stm32f10x.h"

#define on 1

#define off 0

#define delay_time 0x3fffff

enum

;typedef struct led_gpio_s

led_gpio_t;

led_gpio_t leds_gpio[max_led] =

, /* led1 用的gpb5 */

, /* led2 用的gpd6 */

, /* led3 用的gpd3 */

};void init_led_gpio(void)

void delay(__io uint32_t ncount)

int main(void)

}

菜鳥學STM32 流水燈

從知道有stm32這個東西到現在也有快有2周時間了,還記得第一次接觸它時便被它強大的功能震撼了,由於之前只學過51,stm32迎面撲來的那麼多內容讓我著實有點招架不住,經朋友指點,果斷放棄之前準備認真研究資料手冊的想法,開始從例程入手,不過對於只操作過51的我來說,對我來說例程都有著不小的難度,沒辦...

STM32 GPIO之二 按鍵例程 學習總結

一.gpio的8種工作模式 1.4種輸入模式 1 上拉輸入模式 gpio mode ipu 在預設狀態下 gpio引腳無輸入 讀取得的gpio引腳資料為1,高電平。2 下拉輸入模式 gpio mode ipd 在預設狀態下 gpio引腳無輸入 讀取得的gpio引腳資料為0,低電平。3 浮空輸入模式 ...

STM32GPIO部分介紹

最近在老師交給了乙個專案,需要用到stm32微控制器,這裡就在學習的過程中所注意到的一些地方或細節部分記錄了下來,筆者所使用的是stm32f407zgt6晶元 探索者 檢視晶元的資料手冊 這個 對每個i o口的功能進行了很詳細的介紹。每個i o除了作為i o使用外,還可以作為其他的復用。已以pe2口...