已经搭建好了开发环境后就可以很方便的用Clion打开官方的example程序,编译烧录。
安装篇已经测试了hello_world工程,本篇介绍第二个起步工程 - blink,从工程的名字来看就是让开发板上的LED灯闪烁。
-
使用Clion打开blink工程(开发环境的搭建还是很重要的,后面的学习更加方便😀)
从README文件中可以看到,这个示例是使用GPIO控制开发板上LED等闪烁,后面一部分led_strip以后再学习。 -
查看代码
#define BLINK_GPIO CONFIG_BLINK_GPIO //用于控制闪烁的 GIPO pin号,默认是 5
static uint8_t s_led_state = 0; //状态标志位
static void blink_led(void)
{
/* 设置GPIO的高低电平 */
gpio_set_level(BLINK_GPIO, s_led_state);
}
static void configure_led(void)
{
ESP_LOGI(TAG, "Example configured to blink GPIO LED!");
gpio_reset_pin(BLINK_GPIO);
/* 设置GPIO的输出模式 */
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
}
void app_main(void)
{
/* Configure the peripheral according to the LED type */
configure_led();
while (1) {
ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");
blink_led();
/* 反转 LED 状态标志位,达到闪烁的目的*/
s_led_state = !s_led_state;
vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
}
}
- 这里用到了ESP_IDF中关于GPIO的几个函数,推荐查看官方手册了解一下功能,下载地址
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level)
GPIO set output level.
参数
• gpio_num –GPIO pin号. 例如你想设置 GPIO16的输出, gpio_num 应该为 GPIO_NUM_16 (16);
• level –输出高低电平. 0: low ; 1: high
返回
• ESP_OK Success
• ESP_ERR_INVALID_ARG GPIO number error
esp_err_t gpio_reset_pin(gpio_num_t gpio_num)
设置GPIO到默认状态
参数 gpio_num – GPIO pin号.
返回 Always return ESP_OK
esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)
GPIO set direction.设置GPIO方向
设置GPIO方向,例如 output_only,input_only,output_and_input
参数
• gpio_num –设置GPIO的pin号
• mode –GPIO direction
返回
• ESP_OK Success
• ESP_ERR_INVALID_ARG GPIO error
GPIO的函数还很多,遇到相关的函数时可以通过查询手册来了解函数功能。
- 编译烧录,发现LED并没有闪烁,囧
- 查看了开发板的原理图,发现LED连接的GPIO引脚是8,需要修改
方式一:通过idf.py menuconfig (推荐)
方式二:直接修改 sdkconfig文件
再次编译烧录,可以看到LED等的闪烁了😀