/***************************************************************************//** * @brief gpio_direction *******************************************************************************/ int32_t gpio_direction(uint8_t pin, uint8_t direction) { #ifdef _XPARAMETERS_PS_H_ XGpioPs_SetDirectionPin(&gpio_instance, pin, direction); XGpioPs_SetOutputEnablePin(&gpio_instance, pin, 1); #else uint32_t channel = 1; uint32_t config = 0; /* We assume that pin 32 is the first pin from channel 2 */ if (pin >= 32) { channel = 2; pin -= 32; } config = XGpio_GetDataDirection(&gpio_instance, channel); if (direction) { config &= ~(1 << pin); } else { config |= (1 << pin); } XGpio_SetDataDirection(&gpio_instance, channel, config); #endif return 0; }
void IO_SetDirection(u8 bit, u8 dir) { u32 mask; mask = XGpio_GetDataDirection(&gpio, 1); if(dir==IO_DIR_OUTPUT) mask &= (~(1u<<bit)); else if(dir==IO_DIR_INPUT) mask |= (1u<<bit); XGpio_SetDataDirection(&gpio, 1, mask); }