学习记录
ESP8266 01S GPIO_Input
函数
#define GPIO_DIS_OUTPUT(gpio_no) gpio_output_set(0,0,0, 1<<gpio_no)
//io口失能输出
#define PIN_PULLUP_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP)
//io口失能上拉
#define GPIO_INPUT_GET(gpio_no) ((gpio_input_get()>>gpio_no)&BIT0)
//读取IO电平
user_init()
void ICACHE_FLASH_ATTR
user_init(void)
{
u8 led = 0;
uart_init(9600, 9600);
os_delay_us(10000);
os_printf("\r\n---------------\r\n");
os_printf("\r\n SDK version: %s \r\n", system_get_sdk_version()); //串口打印SDK版本
os_printf("\r\n ProjectName: %s \r\n", ProjectName); //串口打印SDK版本
uart0_sendStr("\r\n HELLO WORLD!!! \r\n");
os_printf("\r\n---------------\r\n");
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0);
GPIO_DIS_OUTPUT(GPIO_ID_PIN(0));
PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO0_U);
while(1)
{
system_soft_wdt_feed();
if(GPIO_INPUT_GET(GPIO_ID_PIN(0)))
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
uart0_sendStr("\r\n按了?\r\n");
}
else
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);
uart0_sendStr("\r\n没按?\r\n");
}
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), led);
}
}
设为IO口,失能输出,失能上拉。
问题
if(GPIO_INPUT_GET(GPIO_ID_PIN(0)))
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
uart0_sendStr("\r\n按了?\r\n");
}
else
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);
uart0_sendStr("\r\n没按?\r\n");
}
这两句话有问题,串口一直打印。
后记
即使上拉不失能,也可以。