7823a28ff8
This reverts a behaviour change from 3ceadfc0a6
.
59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
/* The classic "blink" example
|
|
*
|
|
* This sample code is in the public domain.
|
|
*/
|
|
#include "espressif/esp_common.h"
|
|
#include "esp/uart.h"
|
|
#include "FreeRTOS.h"
|
|
#include "task.h"
|
|
#include "esp8266.h"
|
|
|
|
const int gpio = 14;
|
|
|
|
/* This task uses the high level GPIO API (esp_gpio.h) to blink an LED.
|
|
*
|
|
* Even though it reads better than the register-level version in blinkenRegisterTask,
|
|
* they compile to the exact same instructions (except gpio_enable also set the output type in
|
|
* the GPIO control register).
|
|
*/
|
|
void blinkenTask(void *pvParameters)
|
|
{
|
|
gpio_enable(gpio, GPIO_OUTPUT);
|
|
while(1) {
|
|
gpio_write(gpio, 1);
|
|
vTaskDelay(1000 / portTICK_RATE_MS);
|
|
gpio_write(gpio, 0);
|
|
vTaskDelay(1000 / portTICK_RATE_MS);
|
|
}
|
|
}
|
|
|
|
|
|
/* This task uses all raw register operations to set the pins.
|
|
|
|
It's not fully parameterised, as the IOMUX_GPIO# macros involve a non-linear
|
|
mapping from GPIO to IOMUX ports.
|
|
|
|
There is no significant performance benefit to this way over the
|
|
blinkenTask version, so it's probably better to use the blinkenTask
|
|
version.
|
|
|
|
NOTE: This task isn't enabled by default, see the commented out line in user_init.
|
|
*/
|
|
void blinkenRegisterTask(void *pvParameters)
|
|
{
|
|
GPIO.ENABLE_OUT_SET = BIT(gpio);
|
|
IOMUX_GPIO14 = IOMUX_GPIO14_FUNC_GPIO | IOMUX_PIN_OUTPUT_ENABLE; /* change this line if you change 'gpio' */
|
|
while(1) {
|
|
GPIO.OUT_SET = BIT(gpio);
|
|
vTaskDelay(1000 / portTICK_RATE_MS);
|
|
GPIO.OUT_CLEAR = BIT(gpio);
|
|
vTaskDelay(1000 / portTICK_RATE_MS);
|
|
}
|
|
}
|
|
|
|
void user_init(void)
|
|
{
|
|
uart_set_baud(0, 115200);
|
|
xTaskCreate(blinkenTask, (signed char *)"blinkenTask", 256, NULL, 2, NULL);
|
|
//xTaskCreate(blinkenRegisterTask, (signed char *)"blinkenRegisterTask", 256, NULL, 2, NULL);
|
|
}
|