学习记录
ESP8266 01S GPIO_Output
相关资料
api参考
技术参考
管脚清单
头文件
加入#include “eagle_soc.h”
GPIO函数
将管脚设为IO功能
#define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \
WRITE_PERI_REG(PIN_NAME, \
(READ_PERI_REG(PIN_NAME) \
& (~(PERIPHS_IO_MUX_FUNC<<PERIPHS_IO_MUX_FUNC_S))) \
|( (((FUNC&BIT2)<<2)|(FUNC&0x3))<<PERIPHS_IO_MUX_FUNC_S) ); \
} while (0)
PIN_NAME为管脚名, FUNC为管脚功能。
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
将管脚2设成io口。
FUNC也可以写为功能号-1,即1-1=0。
设定管脚模式
#define GPIO_OUTPUT_SET(gpio_no, bit_value) \
gpio_output_set((bit_value)<<gpio_no, ((~(bit_value))&0x01)<<gpio_no, 1<<gpio_no,0)
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
将参数1的IO口(IO2)设为输出模式,将参数二的电平输出,即高电平。
user_init()
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);
while(1)
{
system_soft_wdt_feed();
led = !led;
delay_ms(1000);
uart0_sendStr("delay_ms(1000);");
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), led);
}
}
效果
LED果真翻转了
这儿只展示串口输出
发现
发现esp8266 01s 的led灯是连在gpio2上的,当io2为低电平时亮,高电平时灭。