#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) & ~(mask << shift)) | ((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) & (mask << shift)) >> shift; return 0; } // ---------------------------------------------------------