事实上,所有在esp32上用到的api在esp-idf中都能找到,但是对于我们来讲这是一个大而全的API参考指南,在项目的初期,我们没有必要花费太多的时间详细的阅读每一个API的使用,挑一些常用的API进行学习,而后再根据使用情况来查询参考文档,这样才能达到事半功倍的效果,那么这里就罗列一些常用的API吧:
1、ESP_LOG
我们写程序最本能的就是关键的步骤都要打一些日志到串口终端,这样可以看到执行情况。
1)、在ESP的项目中请使用LOG API打印,不用用printf等裸api,这样可以在项目的不同阶段可以通过统一设置来打开关闭特定级别的LOG;
2)、打印LOG的时候请确定好要使用的级别,是只是Debug信息还是错误信息等,因为有些级别的LOG在项目后期时需要关闭的。
ESP_LOGE - 错误日志 (最低)
ESP_LOGW - 警告日志
ESP_LOGI - 信息级别的日志
ESP_LOGD - 用于调试的日志
ESP_LOGV - 仅仅用于提示的日志{最高)
2、vTaskDelay
void vTaskDelay( portTickTypexTicksToDelay )
调用vTaskDelay()函数后,任务会进入阻塞状态,持续时间由vTaskDelay()函数的参数xTicksToDelay指定,单位是系统节拍时钟周期。常量portTICK_RATE_MS 用来辅助计算真实时间,此值是系统节拍时钟中断的周期,单位是毫秒。在文件FreeRTOSConfig.h中,宏INCLUDE_vTaskDelay 必须设置成1,此函数才能有效。
3、xTaskCreate
xTaskCreate( pdTASK_CODE pvTaskCode, const portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask
创建新的任务并添加到任务队列中,准备运行
参数如下:
pvTaskCode
指向任务的入口函数. 任务必须执行并且永不返回 (即:无限循环).
pcName
描述任务的名字。主要便于调试。最大长度由configMAX_TASK_NAME_LEN.定义
usStackDepth
指定任务堆栈的大小 ,堆栈能保护变量的数目- 不是字节数. 例如,如果堆栈为16位宽度,usStackDepth定义为 100, 200 字节,这些将分配给堆栈。堆栈嵌套深度(堆栈宽度)不能超多最大值——包含了size_t类型的变量
pvParameters
指针用于作为一个参数传向创建的任务
uxPriority
任务运行时的优先级( 0 : 优先级最低)
pvCreatedTask
用于传递一个处理——引用创建的任务