定时器

[English]


ESP8266 使⽤ HW 定时器中断有哪些注意事项?

  • 可以参考相关 API 文档 《ESP8266 技术参考手册》

  • 如果使用 NonOS SDK,可参考 《ESP8266 Non-OS SDK API 参考》

  • 通常情况下,硬件中断回调函数需要尽快执行结束,并且将回调函数放入 IRAM 中,避免 Cache 关闭的影响。

    • RTOS SDK 需要在函数名前添加链接器属性 IRAM_ATTR。

    • NonOS SDK 不能在函数名前添加 ICACHE_FLASH_ATTR(该属性指定函数放在 flash 中)。


定时器如何设置中断优先级呢?

  • esp_timer 以 ESP32 为例,可以通过在 Menuconfig 中修改配置项 CONFIG_ESP_TIMER_INTERRUPT_LEVEL 来配置中断优先级。

  • General-Purpose Timer 可以在注册中断服务函数时设置中断优先级,具体请参考 timer_isr_callback_add 的 API 说明。


如何提高 gptimer 中断响应的及时性?

可以将中断函数与相应的 callback 放入到 IRAM 中。