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