项目需要用到esp32的定时器计算心率,现将学习内容整理如下:
正文
官方对定时器的说明:https://esp-idf.readthedocs.io/en/latest/api-reference/system/esp_timer.html
前期步骤
创建一个定时的函数
esp_timer_create()
第一个参数是定时器结构体,第二个是定时器返回的句柄!
返回值是也是一个结构体类型的
esp_err_t
开始执行定时器有2个方法,一个是执行单次的
esp_timer_start_once()
和周期性执行的esp_timer_start_periodic()
, 虽然传入的参数的类型都为一样,但是传入参数含义有所不一样!esp_timer_start_once()
的传参含义分别是:句柄 ,第二个是:这个时间后将触发的事件回调;esp_timer_start_periodic()
的传参含义分别是:句柄 ,第二个是:每次触发的事件回调的时间间隔;
- 对于要暂停和删除定时器,官方提供了下面2个方法:
暂停定时器:
esp_timer_stop()
:停止一个定时器操作,不管是执行单次的还是重复性执行的!形参是定时器的句柄!删除定时器:
esp_timer_delete()
:删除一个定时器,记得必须要先暂停定时器哦!形参是定时器的句柄!
废话不说,上代码!
1 | /定义2个定时器句柄 |
1 | void test_timer_periodic_cb(void *arg) { |