天天看點

判斷STM32 GPIO輸入口的輸入狀态(高電平或低電平)

判斷STM32 GPIO輸入口的輸入狀态(高電平或低電平)

以PE2和PE4為例:

① 判斷單個端口是否為高電平:

if(GPIOE->IDR& GPIO_IDR_IDR2)

{

函數體;

}

當PE2端口為高電平時,if條件為真;當PE2口為低電平時,if條件為假;

② 判斷單個端口是否為低電平:

if((~GPIOE->IDR)& GPIO_IDR_IDR2)

{

函數體;

}

分析:首先通過 &GPIO_IDR_IDR屏蔽掉PE2之外的其他PE口。當PE2為高電平時,GPIO-〉IDR的bit2為‘1’,取反後為‘0’,是以條件為假;當PE2為低電平時,GPIO-〉IDR的bit2為‘0’,取反後為‘1’,是以條件為真;通過此方法可以同時判斷PE2或PE4(甚至更多PE口)是否為低電平(如按鍵被按下)

③ 判斷多個端口中是否有低電平:

if((~GPIOE->IDR)& (GPIO_IDR_IDR2 | GPIO_IDR_IDR4))

{

函數體;

}

分析:首先通過 & (GPIO_IDR_IDR2| GPIO_IDR_IDR4)屏蔽掉PE2和PE4之外的其他PE口。當PE2或(和)PE4中為低電平時,GPIO-〉IDR的bit2或(和)bit4為‘0’,取反後為‘1’,是以條件為真;

注:此方法并不是用來判斷stm32 IO口狀态的最好和最直接的方法,但對于了解位操作會有幫助。

繼續閱讀