Jave 发表于 2018-8-8 11:35:11

ESP-12F SOC方案GPIO问题

为什么我从机智云下载的SOC然后想测试下控制GPIO输出的电平。只有GPIO5能正常的控制,其他脚要么是只高电平或低电平,控制不了?
请问这是什么原因?是不是还需要对GPIO的初始化设置?是的话要怎么做?写个实例谢谢了。

Seasonic 发表于 2018-8-8 15:16:27

void ICACHE_FLASH_ATTR rgbGpioInit(void)
{
    /* Migrate your driver code */

    // SCL/SDA
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);

    gpio_output_set(0, 0, GPIO_ID_PIN(GPIO_RGB_SCL) | GPIO_ID_PIN(GPIO_RGB_SDA), 0); //| GPIO_ID_PIN(GPIO_RGB_POW)

    os_printf("rgbGpioInit \r\n");
}
需要初始化,请参考RGB的GPIO初始化程序,

Jave 发表于 2018-8-8 17:08:16

Seasonic 发表于 2018-8-8 15:16
需要初始化,请参考RGB的GPIO初始化程序,

确实是这个问题,谢谢了

duanjun0551 发表于 2018-8-8 18:56:53

我用的安信可的模块初始化了都不能控制会是什么问题呢

Jave 发表于 2018-8-9 09:26:41

duanjun0551 发表于 2018-8-8 18:56
我用的安信可的模块初始化了都不能控制会是什么问题呢

贴上程序看看

duanjun0551 发表于 2018-8-13 18:05:05

Jave 发表于 2018-8-9 09:26
贴上程序看看

定义
#define led_on()   PIN_PULLUP_EN(GPIO_OUTPUT_4);
//GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);
#define led_off()    PIN_PULLUP_DIS(GPIO_OUTPUT_4);
//GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);
#define switchon()    GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);
#define switchoff()   GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);

for(i = 0; i < info->num; i++)
    {
      switch(info->event)
      {
      case EVENT_inhome_light :
            currentDataPoint.valueinhome_light = dataPointPtr->valueinhome_light;
            GIZWITS_LOG("Evt: EVENT_inhome_light %d \n", currentDataPoint.valueinhome_light);
            if(0x01 == currentDataPoint.valueinhome_light)
            {
                //user handle
                //gpio16_output_set(1);
                //GPIO_OUTPUT_SET(GPIO_OUTPUT12_FUNC,1);
                     GPIO_OUTPUT_SET(GPIO_ID_PIN(GPIO_OUTPUT_4_NUM), 1);
               GPIO_OUTPUT_SET(4, 1);
               GIZWITS_LOG("GPIO-ON\n");
               led_on();
                  switchon();
                  gpio_output_set(BIT4, 0, BIT4, 0);
               STA= 1;
            }
            else
            {
                //user handle
                //gpio16_output_set(0);
                //GPIO_OUTPUT_SET(GPIO_OUTPUT12_FUNC,0);
                GPIO_OUTPUT_SET(GPIO_ID_PIN(GPIO_OUTPUT_4_NUM), 0);
               GPIO_OUTPUT_SET(4, 0);
                GIZWITS_LOG("GPIO-OFF\n");
                led_off();
               switchoff();
               gpio_output_set(0, BIT4, BIT4, 0);
                STA= 0;
            }
            break;

初始化代码
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
      

Jave 发表于 2018-8-14 09:56:27

duanjun0551 发表于 2018-8-13 18:05
定义
#define led_on()   PIN_PULLUP_EN(GPIO_OUTPUT_4);
//GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);


#define Relay1                                12
#define Relay2                                13

#define Relay1_ON()                        GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay1),1)
#define Relay1_OFF()                GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay1),0)
#define Relay2_ON()                        GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay2),1)
#define Relay2_OFF()                GPIO_OUTPUT_SET(GPIO_ID_PIN(Relay2),0)

void ICACHE_FLASH_ATTR switchInit(void)
{
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U,FUNC_GPIO13);

        gpio_output_set(0,0,GPIO_ID_PIN(Relay1)|GPIO_ID_PIN(Relay2),0);
        os_printf("switchGpioInit \r\n");
}
这样子初始化
页: [1]
查看完整版本: ESP-12F SOC方案GPIO问题