IOMUXC_SetPinMux的0,1参数解释
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);}
}