STM32——GPIO輸入模式下上拉和下拉的設(shè)置
GPIO處于輸入模式下,下拉輸入和上拉輸入的相關(guān)配置如下圖所示。需要注意的是,下拉輸入和上拉輸入是通過端口輸出寄存器GPIOx_ODR來區(qū)分的。因此,在進(jìn)行上拉/下拉輸入配置時(shí)候,雖然對GPIO進(jìn)行的關(guān)于輸入的操作,但是仍要對和輸出相關(guān)的寄存器ODR進(jìn)行配置。
上述注意事項(xiàng)在實(shí)際代碼編寫時(shí)表現(xiàn)為:
(1)庫函數(shù)
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//PA0
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//PA0下拉輸入
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//PA0下拉ODR=0
特此說明,雖然GPIO_Mode中區(qū)分了上拉輸入模式GPIO_Mode_IPU和下拉輸入模式GPIO_Mode_IPD,如下圖所示,但是在GPIO初始化配置時(shí)候仍然需要對ODR寄存器進(jìn)行設(shè)置,如上述的GPIO_ResetBits(GPIOA,GPIO_Pin_0);操作。
(2)寄存器
GPIOA->CRL&=0XFFFFFFF0;//PA0清除之前設(shè)置
GPIOA->CRL|=0X00000008;//PA0輸入
GPIOA->ODR|=0<<0;//PA0下拉
此外,GPIO處于輸入模式下,不需要對MODE1和MODE0進(jìn)行設(shè)置(初始化之后默認(rèn)為00)
輸出模式位(僅在輸出模式下配置,輸入模式下不需要)