void gpio_config(GPIO_ConfigTypeDef *pGPIOConfig) { uint32 gpio_pin_mask = pGPIOConfig->GPIO_Pin; uint32 gpio_pin_mask_high = pGPIOConfig->GPIO_Pin_high; uint32 io_reg; uint8 io_num = 0; uint32 pin_reg; uint32 bit_valid; if (pGPIOConfig->GPIO_Mode == GPIO_Mode_Input) { GPIO_AS_INPUT(gpio_pin_mask); GPIO_AS_INPUT_HIGH(gpio_pin_mask_high); } else if (pGPIOConfig->GPIO_Mode == GPIO_Mode_Output) { GPIO_AS_OUTPUT(gpio_pin_mask); GPIO_AS_OUTPUT_HIGH(gpio_pin_mask_high); } do { bit_valid = (io_num >= 32 ? (gpio_pin_mask_high & (0x1 << (io_num - 32))) : (gpio_pin_mask & (0x1 << io_num))); if (bit_valid && (io_reg = GPIO_PIN_REG[io_num])) { if (pGPIOConfig->GPIO_Mode == GPIO_Mode_Input) { SET_PERI_REG_MASK(io_reg, FUN_IE); } //for ESP32 function 2 of every pad is allways GPIO func PIN_FUNC_SELECT(io_reg, 2); if (pGPIOConfig->GPIO_Pullup) { PIN_PULLUP_EN(io_reg); } else { PIN_PULLUP_DIS(io_reg); } if (pGPIOConfig->GPIO_Pulldown) { PIN_PULLDWN_EN(io_reg); } else { PIN_PULLDWN_DIS(io_reg); } if (pGPIOConfig->GPIO_Mode == GPIO_Mode_Out_OD) { portENTER_CRITICAL(); pin_reg = GPIO_REG_READ(GPIO_PIN_ADDR(io_num)); //pin_reg &= (~GPIO_GPIO_PIN0_PAD_DRIVER); pin_reg |= GPIO_GPIO_PIN0_PAD_DRIVER; GPIO_REG_WRITE(GPIO_PIN_ADDR(io_num), pin_reg); portEXIT_CRITICAL(); } gpio_pin_intr_state_set(io_num, pGPIOConfig->GPIO_IntrType); } io_num++; } while (io_num < GPIO_PIN_COUNT); }
//////////////////////////////////////////// // user_init - Entry point of application // //////////////////////////////////////////// void user_init(void) { // Set the LED as an output, turn it off: GPIO_AS_OUTPUT(LED_PIN); GPIO_OUTPUT_SET(LED_PIN, 0); // Configure the UART, print a message: UART_SetBaudrate(UART0, BIT_RATE_115200); printf("SDK version:%s\n", system_get_sdk_version()); // Connect to WiFi: connectWiFi(); }
static void pinMode(uint8_t pin, uint8_t mode) { if (pin < 16) // only for GPIO0 to GPIO15, GPIO16 is special { if (mode == OUTPUT) { GPIO_AS_OUTPUT(1 << pin); } else // INPUT { GPIO_AS_INPUT(1 << pin); } } }
void user_init(void) { GPIO_AS_OUTPUT(LED_PIN); // Set LED as output GPIO_OUTPUT_SET(LED_PIN,1); blinkIntervalTimer(interval); }
/************************************************************** * Name : export_func * Description : * Parameters : [Input, Output, Input / output] * Return : * Critical/explanation : [yes / No] **************************************************************/ void PELC_TurnOff(T_UBYTE lub_pcr){ GPIO_AS_OUTPUT(lub_pcr); OUTPUT_LOW(lub_pcr); }
/************************************************************** * Name : export_func * Description : * Parameters : [Input, Output, Input / output] * Return : * Critical/explanation : [yes / No] **************************************************************/ void PELC_TurnOnFull(T_UBYTE lub_pcr){ GPIO_AS_OUTPUT(lub_pcr); OUTPUT_HIGH(lub_pcr); }