This blinky example is using pure ESP8266 Non-OS SDK (v2.0.0). This project template has been tested on Ubuntu Linux. The complete code is on GitHub, here.
Parts Required
- ESP8266 Development Module (for example based on ESP-12N, with build in LED)
Software
This code is written in C and can be compiled using xtensa-lx106-elf-gcc. Don’t know how to start? Please read about building ESP8266 toolchain for Linux.
/** * Copyright (c) 2019, Łukasz Marcin Podkalicki <lpodkalicki@gmail.com> * ESP8266/005 * Blinky example using pure ESP8266 Non-OS SDK. */ #include "ets_sys.h" #include "osapi.h" #include "gpio.h" #include "os_type.h" #include "user_config.h" #define LED_PIN (2) static volatile os_timer_t blinky_timer; static void blinky_timer_handler(void *prv); void ICACHE_FLASH_ATTR user_init() { uint8_t value = 0; /* setup */ gpio_init(); // init gpio subsytem gpio_output_set(0, 0, (1 << LED_PIN), 0); // set LED pin as output with low state uart_div_modify(0, UART_CLK_FREQ / 115200); // set UART baudrate os_printf("\n\nSDK version:%s\n\n", system_get_sdk_version()); /* start timer (500ms) */ os_timer_setfn(&blinky_timer, (os_timer_func_t *)blinky_timer_handler, NULL); os_timer_arm(&blinky_timer, 500, 1); } void blinky_timer_handler(void *prv) { if (GPIO_REG_READ(GPIO_OUT_ADDRESS) & (1 << LED_PIN)) { gpio_output_set(0, (1 << LED_PIN), 0, 0); // LED off } else { gpio_output_set((1 << LED_PIN), 0, 0, 0); // LED on } }