GPIO几种配置的作用
生活随笔
收集整理的這篇文章主要介紹了
GPIO几种配置的作用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
STM32 IO 配置詳解及代碼例子
IO 口模式:
GPIO_Mode_AIN = 0x0, 模擬輸入
GPIO_Mode_IN_FLOATING = 0x04, 浮空輸入
GPIO_Mode_IPD = 0x28, 帶下拉輸入
GPIO_Mode_IPU = 0x48, 帶上拉輸入
GPIO_Mode_Out_OD = 0x14, 表示配置相應(yīng)管腳為 GPIO 開漏輸出(真雙向 IO)
GPIO_Mode_Out_PP = 0x10, 通用推挽輸出模式
GPIO_Mode_AF_OD = 0x1C, 表示配置相應(yīng)管腳為復(fù)用功能的開漏輸出
GPIO_Mode_AF_PP = 0x18 復(fù)用功能的推挽輸出模式
推挽輸出:可以輸出高,低電平,連接數(shù)字器件;推挽結(jié)構(gòu)一般是指兩個三極管分別受兩互補(bǔ)信號的控制,總
是在一個三極管導(dǎo)通的時(shí)候另一個截止.
開漏輸出:輸出端相當(dāng)于三極管的集電極. 要得到高電平狀態(tài)需要上拉電阻才行. 適合于做電流型的驅(qū)動,
其吸收電流的能力相對強(qiáng)(一般 20ma 以內(nèi)).
要實(shí)現(xiàn) 線與 需要用 OC(open collector)門電路.是兩個參數(shù)相同的三極管或 MOSFET,以推挽方式存在于電
路中,
各負(fù)責(zé)正負(fù)半周的波形放大任務(wù),電路工作時(shí),兩只對稱的功率開關(guān)管每次只有一個導(dǎo)通,所以導(dǎo)通損耗小,
效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流。
//--------------------------------------------------------------------------
但用作純粹的輸出時(shí),可以選用 GPIO_Mode_Out_PP,但是有些硬件上有要求用開發(fā)射極的結(jié)構(gòu)就要 用
GPIO_Mode_Out_OD 。
如果既要用于輸出,又要接收信號作輸入,無需改變該 pin 的工作模式,只需設(shè)定為輸入浮點(diǎn)狀 態(tài)
GPIO_Mode_IN_FLOATING ,但是讀的時(shí)候讀輸入寄存器(GPIOE->IDR)的值。輸出值照樣設(shè)定,不過輸出 pin
腳可能要硬件上 上拉。
/******************************************************************************** Function Name : GPIO_Configuration 通用輸入輸出口配置
* Description : Configures the different GPIO ports.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* ---------------------------------GPIOA 配置--------------------------------*/
// PA09:10 =Tx:Rx 串口 0 收發(fā)接口
/* Configure USART1 Tx (PA.09) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART1 Rx (PA.10) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);/* ---------------------------------GPIOB 配置--------------------------------*/
/* ---------------------------------GPIOC 配置--------------------------------*/
//PC4,5,6,7 =LED1,2,3,4 接口配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// PC0 =ADC-Channel10 模擬輸入(接開發(fā)板上滑動變阻器)
/* Configure PC.00 (ADC Channel10) as analog input -------------------------*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PC.00 為 ADC Channel10 模擬輸入(接滑動變阻器)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* ---------------------------------GPIOD 配置--------------------------------*/
// PD11~15; PD3:4 =KEY4-DOWN,UP,LEFT,RIGHT,SEL; KEY2:3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_11 | GPIO_Pin_12 |
GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);/* ---------------------------------GPIOE 配置--------------------------------*/
}
總結(jié)
以上是生活随笔為你收集整理的GPIO几种配置的作用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:Ochora Dennis Rea
- 下一篇: 【2017年第1期】专题导读:大数据与信