通過控制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口...