GPIO 初始化理解

2021-10-07 20:21:37 字數 1863 閱讀 3516

1. gpio 初始化理解

# include

//包含標頭檔案

# define

//巨集 替換,不進行語法檢查

# define

//巨集名 () #define abc (5+3)

# ifdef #endif

// 預編譯

// gpio 初始化

void

gpio_init

(gpio_typedef* gpiox, gpio_inittypedef* gpio_initstruct)

//可以理解 gpio_typedef *gpiox,gpio_typedef 是結構體型別,類似int,*gpiox 是指標,也就是gpiox 位址

/*功能描述: 根據gpio_initstruct中指定的引數初始化外設gpiox暫存器

輸入引數1: gpiox:x可以是a,b,c,d或者e,來選擇gpio外設

輸入引數2: gpio_initstruct:指向結構gpio_inittypedef的指標,包含了外設gpio的配置資訊

本身兩個引數(形參)都是指標型別,而第乙個實參gbiob本身在巨集定義:#define gpiob ((gpio_typedef *) gpiob_base)中定義的即為指標型別,所以直接寫gpiob。而第二個實參 gpio_initstructure定義為:gpio_inittypedef gpio_initstructure; 只是個結構體變數,所以需要對其進行取位址&gpio_initstructure。

*///標頭檔案「stm32f10x_gpio.h」看到對gpio_inittypedef 的定義, 用結構體gpio_inittypedef 申明結構體變數 gpio_initstructure

typedef

struct

gpio_inittypedef;

/* 關於gpiomode_typedef 定義*/

typedef

enum

gpiomode_typedef;

/* 關於gpiospeed_typedef 定義*/

typedef

enum

gpiospeed_typedef;

/* 通過gpio 初始化例項來講解結構體成員變數含義 */

gpio_inittypedef gpio_initstructure;

/* 申明乙個結構體,名字gpio_initstructure ,結構體原型由gpio_inittypedef 確定*/

gpio_initstructure.gpio_pin = gpio_pin_5;

// led0-->pb.5 埠配置, 結構體指標訪問成員使用 -> 或者.

gpio_initstructure.gpio_mode= gpio_mode_out_pp;

// 推挽輸出

gpio_initstructure.gpio_speed= gpio_speed_50mhz;

//速度50mhz

gpio_init

(gpiob,

&gpio_initstructure)

;// 根據設定引數配置gpio

/* gpio_initstructure 它的形參是乙個結構體指標 gpio_inittypedef*所以必須要對這個形參也就是 這個結構體取位址,gpio_initstructure->gpio_mode中 -> 就說明是對結構體操作,至於要不要這個取位址符 就要看你的實參 和形參 了

形參是 位址 實參 是變數 那麼就要對實參取位址

形參是 位址 實參 是位址 或者

形參是 變數 實參 是變數

那麼就沒有必要 取位址 */

初始化GPIO的常用格式

gpio inittypedef gpio initstructure 引用兩個結構體 gpio是掛載在apb2匯流排的外設,使用使用rcc apb2periphclockcmd 來實現。rcc apb2periphclockcmd rcc apb2periph gpioa rcc apb2peri...

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

全面理解初始化順序

例子 classa static publica public string test public static intgetnum 它只屬於a classbextendsa static publicb public string test 覆蓋 public static intgetnum ...