📄 lld_gpio.c
字号:
* ** None ** *************************************************************************/tVoid LLD_GPIO_SetAFODOutput(GPIO_ID id, tU8 u8Pin){ /* The Output configuration is Pc0=0, Pc1=1, Pc2=1 */ tU16 u16Buffer; if( GPIO_A == id ) { u16Buffer = rd16_reg(GpioA,Pc0); wr16_reg(GpioA,Pc0,u16Buffer & ~(1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc1); wr16_reg(GpioA,Pc1,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc2); wr16_reg(GpioA,Pc2,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ } if( GPIO_B == id ) { u16Buffer = rd16_reg(GpioB,Pc0); wr16_reg(GpioB,Pc0,u16Buffer & ~(1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc1); wr16_reg(GpioB,Pc1,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc2); wr16_reg(GpioB,Pc2,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ }}/************************************************************************* ** FUNCTIONS ** ** LLD_GPIO_SetInput ** ** DESCRIPTION ** ** Program the u8Pin of the id GPIO port as input. ** ** CALLS ** ** LLD macros ** ** INPUTS ** ** GPIO_ID id: GPIO identificator ** tU8 u8in: Pin number ** ** OUTPUTS ** ** None ** *************************************************************************/tVoid LLD_GPIO_SetInput(GPIO_ID id, tU8 u8Pin){ /* The Input configuration is Pc0=1, Pc1=0, Pc2=0 */ tU16 u16Buffer; if( GPIO_A == id ) { u16Buffer = rd16_reg(GpioA,Pc0); wr16_reg(GpioA,Pc0,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc1); wr16_reg(GpioA,Pc1,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc2); wr16_reg(GpioA,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ } if( GPIO_B == id ) { u16Buffer = rd16_reg(GpioB,Pc0); wr16_reg(GpioB,Pc0,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc1); wr16_reg(GpioB,Pc1,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc2); wr16_reg(GpioB,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ }}/************************************************************************* ** FUNCTIONS ** ** LLD_GPIO_SetInput2 ** ** DESCRIPTION ** ** Program the u8Pin of the id GPIO port as input, variant 010 ** ** CALLS ** ** LLD macros ** ** INPUTS ** ** GPIO_ID id: GPIO identificator ** tU8 u8in: Pin number ** ** OUTPUTS ** ** None ** *************************************************************************/tVoid LLD_GPIO_SetInput2(GPIO_ID id, tU8 u8Pin){ /* The Input configuration is Pc0=0, Pc1=1, Pc2=0 */ tU16 u16Buffer; if( GPIO_A == id ) { u16Buffer = rd16_reg(GpioA,Pc0); wr16_reg(GpioA,Pc0,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc1); wr16_reg(GpioA,Pc1,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc2); wr16_reg(GpioA,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ } if( GPIO_B == id ) { u16Buffer = rd16_reg(GpioB,Pc0); wr16_reg(GpioB,Pc0,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc1); wr16_reg(GpioB,Pc1,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc2); wr16_reg(GpioB,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ }}/************************************************************************* ** FUNCTIONS ** ** LLD_GPIO_SetBiDirect ** ** DESCRIPTION ** ** Program the u8Pin of the id GPIO port as bidirectional. ** ** CALLS ** ** LLD macros ** ** INPUTS ** ** GPIO_ID id: GPIO identificator ** tU8 u8in: Pin number ** ** OUTPUTS ** ** None ** *************************************************************************/tVoid LLD_GPIO_SetBiDirect(GPIO_ID id, tU8 u8Pin){ /* The Input configuration is Pc0=1, Pc1=1, Pc2=0 */ tU16 u16Buffer; if( GPIO_A == id ) { u16Buffer = rd16_reg(GpioA,Pc0); wr16_reg(GpioA,Pc0,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc1); wr16_reg(GpioA,Pc1,u16Buffer | (1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc2); wr16_reg(GpioA,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ } if( GPIO_B == id ) { u16Buffer = rd16_reg(GpioB,Pc0); wr16_reg(GpioB,Pc0,u16Buffer | (1<<u8Pin)); /* set bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc1); wr16_reg(GpioB,Pc1,u16Buffer | (1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc2); wr16_reg(GpioB,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ }}/************************************************************************* ** FUNCTIONS ** ** LLD_GPIO_SetHiZ ** ** DESCRIPTION ** ** Program the u8Pin of the id GPIO port as hi Z. ** ** CALLS ** ** LLD macros ** ** INPUTS ** ** GPIO_ID id: GPIO identificator ** tU8 u8in: Pin number ** ** OUTPUTS ** ** None ** *************************************************************************/tVoid LLD_GPIO_SetHiZ(GPIO_ID id, tU8 u8Pin){ /* The Tristate configuration is Pc0=0, Pc1=0, Pc2=0 */ tU16 u16Buffer; if( GPIO_A == id ) { u16Buffer = rd16_reg(GpioA,Pc0); wr16_reg(GpioA,Pc0,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc1); wr16_reg(GpioA,Pc1,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioA,Pc2); wr16_reg(GpioA,Pc2,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ } if( GPIO_B == id ) { u16Buffer = rd16_reg(GpioB,Pc0); wr16_reg(GpioB,Pc0,u16Buffer & ~(1<<u8Pin)); /* clear bit u8Pin. */ u16Buffer = rd16_reg(GpioB,Pc1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -