STM32的輸入輸出模式有多種,可由下面這兩個函數來進行設置。ide
##Input/Output Mode## <!-- lang: cpp --> typedef enum { GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode / GPIO_Mode_OUT = 0x01, /!< GPIO Output Mode / GPIO_Mode_AF = 0x02, /!< GPIO Alternate function Mode / GPIO_Mode_AN = 0x03 /!< GPIO Analog Mode */ }GPIOMode_TypeDef;函數
typedef enum { GPIO_OType_PP = 0x00, GPIO_OType_OD = 0x01 }GPIOOType_TypeDef;
其中PP表明推輓輸出,OD表明開漏輸出。那麼它們之間有什麼區別呢?code
當我想在GPIO上接一個電機或者電磁閥的時候,它們可否直接工做?或者當接數字器件時,又該如何設置?圖片
這就須要考慮到GPIO口的驅動能力,按照需求來設置GPIO口的工做模式。get
推輓輸出——能夠輸出高,低電平,鏈接數字器件io
開漏輸出——輸出端至關於三極管的集電極, 要獲得高電平狀態須要上拉電阻才行,適合於作電流型的驅動,其吸取電流的能力相對強(通常20ma之內)。function
如圖所示,開漏輸出應該叫作 反邏輯。當Inside Logic給1,外面輸出0V;當給0,外面輸出VCC。im
##Reference## [1].http://bbs.ednchina.com/BLOG_ARTICLE_159008.HTMimg