#include "yc11xx_gpio.h" #include "yc_drv_common.h" void GPIO_SetOut(GPIO_NUM gpio, GPIO_OutputTypeDef GPIO_Output) { hw_delay(); if (gpio == GPIO_MAX_NUM) return; switch (GPIO_Output) { case OUT_LOW: HWRITE(CORE_GPIO_CONF + (gpio & GPIO_NUM_MASK),GPCFG_OUTPUT_LOW); break; case OUT_HIGH: HWRITE(CORE_GPIO_CONF + (gpio & GPIO_NUM_MASK),GPCFG_OUTPUT_HIGH); break; default: break; } hw_delay(); } void GPIO_SetInput(GPIO_NUM gpio,GPIO_InputTypeDef GPIO_InputMode) { hw_delay(); if (gpio == GPIO_MAX_NUM) return; switch(GPIO_InputMode) { case GPIO_Mode_IN_FLOATING: HWRITE(CORE_GPIO_CONF + (gpio & GPIO_NUM_MASK),GPCFG_INPUT); break; case GPIO_Mode_IPU: HWRITE(CORE_GPIO_CONF + (gpio & GPIO_NUM_MASK),GPCFG_PULLUP); break; case GPIO_Mode_IPD: HWRITE(CORE_GPIO_CONF + (gpio & GPIO_NUM_MASK),GPCFG_PULLDOWN); break; case GPIO_Mode_AIN: HWRITE(CORE_GPIO_CONF + (gpio & GPIO_NUM_MASK),GPCFG_NO_IE); break; default: break; } hw_delay(); } void GPIO_ClearWakeup(GPIO_NUM gpio) { uint8_t row; uint8_t col; if (gpio == GPIO_MAX_NUM) return; row = (gpio>>3) & 0x03; col = (gpio & 0x07); HWRITE(mem_gpio_wakeup_low+row,HREAD(mem_gpio_wakeup_low+row)& (~(1<> 3 & 3; st = HREAD(regBase+group); return (st & (1 << queue)); } BOOL GPIO_GetInputStatus(GPIO_NUM gpio) { if (gpio == GPIO_MAX_NUM) { error_handle(); } return gpioGetBit(gpio&0x1f,CORE_GPIO_IN); } void GPIO_SetWakeup(GPIO_NUM gpio,GPIO_AwakenTypeDef AWAKEN) { uint8_t row; uint8_t col; if (gpio == GPIO_MAX_NUM) return; row = (gpio>>3) & 0x03; col = (gpio & 0x07); switch(AWAKEN) { case LOW_AWAKEN: HWRITE(GPIO_WAKEUP_LOW_REG+row,HREAD(GPIO_WAKEUP_LOW_REG+row) | (1<