IOMUXC_SetPinMux(IOMUXC_ENET1_RX_DATA0_FLEXCAN1_TX, 0);
這里的第二個參數 0
實際上傳遞給了 inputOnfield
,它控制的是 SION(Software Input On)位。
- 當
inputOnfield
為 0 時,SION 關閉,此時引腳的輸入/輸出方向由硬件功能決定(比如該引腳本身是輸出功能就只能輸出,是輸入功能就只能輸入)。 - 當
inputOnfield
為 1 時,SION 打開,即使該引腳被配置為輸出功能,也會強制使能輸入功能(即“帶有輸入和輸出”),這樣軟件可以讀取該引腳的輸入值。
簡要總結:
inputOnfield = 0
:引腳只按照硬件功能(輸入或輸出)工作。inputOnfield = 1
:引腳無論配置為何種功能,都會強制使能輸入(即可以輸入和輸出)。
這主要用于某些需要軟件采樣輸出引腳電平的場景。
static inline void IOMUXC_SetPinMux(uint32_t muxRegister,uint32_t muxMode,uint32_t inputRegister,uint32_t inputDaisy,uint32_t configRegister,uint32_t inputOnfield)
{*((volatile uint32_t *)muxRegister) =IOMUXC_SW_MUX_CTL_PAD_MUX_MODE(muxMode) | IOMUXC_SW_MUX_CTL_PAD_SION(inputOnfield);if (inputRegister){*((volatile uint32_t *)inputRegister) = IOMUXC_SELECT_INPUT_DAISY(inputDaisy);}
}