STM32的GPIO類似于51單片機(jī)的IO口。只不過STM32的IO口使用時(shí)要配置輸入/輸出模式、速度、而且時(shí)鐘使能后才能使用。
配置相關(guān)代碼:
GPIO_InitTypeDef GPIO_InitStructure;//定義初始化類型結(jié)構(gòu)體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打開GPIOA時(shí)鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//引腳
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//模式
GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化
GPIO電路結(jié)構(gòu):
輸出模式:
1.推挽輸出_Out_PP
電路如下圖一:
輸出的高低電平取決于芯片的電壓,每次只用一個(gè)管子導(dǎo)通,功耗小,速度快,負(fù)載能力強(qiáng)
2.開漏輸出_Out_OD
電路圖入上圖二:
輸出端相當(dāng)于三極管的集電極,想要輸出高電平必須接上拉電阻和電源,高電平取決于外部電壓,適合做電流型驅(qū)動(dòng),上拉電阻越大邏輯電平轉(zhuǎn)換速度越慢,功耗越小,可以將多個(gè)開漏輸出引腳連起來,通過連接上拉電阻,組成線與。
3.復(fù)用推挽輸出_AF_PP
4.復(fù)用開漏輸出_AF_OD
3和4為GPIO復(fù)用為第二功能引腳時(shí)使用,數(shù)據(jù)與片內(nèi)外設(shè)交互而不是GPIO數(shù)據(jù)寄存器。
輸入模式:
1.上拉輸入_IPU
IO內(nèi)部接上拉電阻的輸入,默認(rèn)輸入為1
2.下拉輸入_IPD
IO內(nèi)部接上下電阻的輸入,默認(rèn)輸入為0
3.浮空輸入_IN_FLOATING
邏輯器件的輸入引腳既沒接高電平也沒接低電平,呈高阻態(tài),IO的電平不確定,由外界輸入決定,懸空時(shí),輸入電平不確定。上下拉電阻為幾十K,如果設(shè)置為上下拉模式,當(dāng)引腳長(zhǎng)期處于低高電平時(shí),功耗就會(huì)很大,此時(shí)可以設(shè)為浮空輸入模式,然后外接比較大的上下拉電阻來降低功耗。
4.模擬輸入_AIN
配置為模擬輸入時(shí),讀取輸入數(shù)據(jù)寄存器值為0,模擬即模擬信號(hào)的意思,DAC輸出和AD輸入引腳都配置為模擬輸入模式。