ESP-12F SOC方案GPIO问题
为什么我从机智云下载的SOC然后想测试下控制GPIO输出的电平。只有GPIO5能正常的控制,其他脚要么是只高电平或低电平,控制不了?请问这是什么原因?是不是还需要对GPIO的初始化设置?是的话要怎么做?写个实例谢谢了。
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初始化程序, Seasonic 发表于 2018-8-8 15:16
需要初始化,请参考RGB的GPIO初始化程序,
确实是这个问题,谢谢了 我用的安信可的模块初始化了都不能控制会是什么问题呢 duanjun0551 发表于 2018-8-8 18:56
我用的安信可的模块初始化了都不能控制会是什么问题呢
贴上程序看看 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);
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]