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 ...