#include "libsys.h" #include "gpio.h" // --------------------------------------------------------- uint32_t gpio_init(gpio_if_t *pGPIO, uint32_t base_addr) { pGPIO->pBase = (uint32_t*)base_addr; return 0; } uint32_t gpio_clean(gpio_if_t *pGPIO) { return 0; } uint32_t gpio_write(gpio_if_t *pGPIO, uint32_t mask, uint32_t shift, uint32_t offset, uint32_t value) { *(pGPIO->pBase + offset) = (((*(pGPIO->pBase + offset) >> shift) & ~mask) | (value & mask)) << shift; return 0; } uint32_t gpio_read(gpio_if_t *pGPIO, uint32_t mask, uint32_t shift, uint32_t offset, uint32_t *pValue) { *pValue = (*(pGPIO->pBase + offset) >> shift) & mask; return 0; } // ---------------------------------------------------------