ESP32学习笔记基于esp-idf

一,printf

printf是将东西放入Bafer(缓存),用 "\n" 或 fflush 到串口

其他和C语言差不多

#include <stdio.h>

int year = 2023;
int month = 5;
int day = 10;

float temperature1 = 20.12345;
float temperature2 = -21.12345;
float temperature3 = 4312.12345;


void app_main(void)
{

	printf("Hello World\n");
	printf("%d year,%d month,%d day\n", year, month, day);
	printf("temperature1 % 10.2f\n", temperature1);
	printf("temperature2 %010.2f\n", temperature2);
	printf("temperature1 %10.2f\n", temperature3);


	fflush(stdout);
	
}

二,日志

#include <stdio.h>
#include "esp_log.h"

const char* tagTraffic = "jtd";

void app_main(void)
{


	uint16_t ap_count = 0;
    
    ESP_LOGE("jtd","bll");
    ESP_LOGW("jtd","live have 5%%");
	ESP_LOGI(tagTraffic, "Total APs scanned = %u", ap_count);
    ESP_LOGD("jtd","Live1000 , shiyong200");
    ESP_LOGV("jtd","zml");

	fflush(stdout);

}

发现ESP_LOGD和ESP_LOGV没有打印出来,去查一下这几个函数的日志属性。

跳到 log output 中选择 Verbose 就可以打印出所有的了。

三,eclipse注意

1,终端的打开和设置方法

按照这样设置就可以了

2,eclipse的快捷建

ctrl + 鼠标左键:        跳转到引用的方法
alt + left :                 从所跳转到引用的方法返回原方法
alt + right:                从原处返回到引用的方法

引用文章

3,不要打开多个工程文件不然会出现很多奇怪的错误

添加 

"compileCommands": "${workspaceFolder}/build/compile_commands.json",

四,GPIO

#include <stdio.h>
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "sdkconfig.h"

#define LED_bink_PIN GPIO_NUM_38
#define DELAYMS 2000

uint32_t status1 = 0;

void app_main(void)
{
    gpio_reset_pin(LED_bink_PIN);
    gpio_set_direction(LED_bink_PIN,GPIO_MODE_OUTPUT);


    while(true)
    {
        status1 = !status1;
        gpio_set_level(LED_bink_PIN,status1);

        vTaskDelay(1000/portTICK_PERIOD_MS);
        

    }

}

1,例程讲解

设置GPIO口电平
static void blink_led(void)
{
    /* Set the GPIO level according to the state (LOW or HIGH)*/
    gpio_set_level(BLINK_GPIO, s_led_state);
}
初始化GPIO口
static void configure_led(void)
{
    ESP_LOGI(TAG, "Example configured to blink GPIO LED!");
    gpio_reset_pin(BLINK_GPIO);
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
}

GPIO口的结构体

GPIO的模式(不解释了,到时候看注释)

GPIO中断的类型(类似STM32)

解释

//1ULL 就是 让编译器把 1 当作unsigned long long的数

//0000 0000 64个0 << GPIO_OUTPUT_IO_0
#define GPIO_OUTPUT_PIN_SEL  ((1ULL<<GPIO_OUTPUT_IO_0) | (1ULL<<GPIO_OUTPUT_IO_1))

五,Tick的延迟和设置

原理没听

vTaskDelay();可以将死循环中的CPU空出去执行其他程序

#include <stdio.h>
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

#include "sdkconfig.h"

int count = 0;


void app_main(void)
{

    count  = 1;
    ESP_LOGI("COUNTER","Tick(ms) : %d",(int)portTICK_PERIOD_MS);
    while (1)
    {
        
        ESP_LOGI("COUNTER","Count Value is %d",count);
        count++;

    }
    
}

六,任务看门狗

1,改时间,打开触发panic

2,panic的设置:图上设置是 打印并重启

3,如果你需要开启 vTaskList();等函数,按照下图操作

七,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值