ESP32S3学习——通用定时器补充,附官方示例,带自己理解的注释

文章详细讨论了ESP32S3芯片在ESPIDFv4.4环境下,如何处理定时器中断,特别是关于自动重装载功能的影响,以及如何使用消息队列在中断和主任务间传递定时器事件。同时,文中提供了示例代码,解释了不同定时器组的配置和操作,包括3秒间隔的自动重装载定时器和手动更新计数器的定时器。

芯片:esp32s3

开发环境:espidfv4.4

一、问题

1)最开始有个疑问,关于多久进一次中断的问题,因为串口打印值和想个不一样,如图。后来想明白了

 

group【0】为自动重装载,3s计时间隔,为什么打印值不是3?

原因:到达计数值->自动重装载|进入中断->arr=0->中断中arr已经在计数->counter不为零

所以,是定时器达到计数值进入中断,对于group【0】是3s

2)消息队列,自己理解

  • //main中创建消息队列

  • s_timer_queue = xQueueCreate(10, sizeof(example_timer_event_t));
  • //whilie中接收队列信息,信息来自中断回调

  • xQueueReceive(s_timer_queue, &evt, portMAX_DELAY);
  • 中断中

  • //创建结构体:储存定时器信息等

  • example_timer_event_t evt = {
    
    .info.timer_group = info->timer_group,
    
    .info.timer_idx = info->timer_idx,
    
    .info.auto_reload = info->auto_reload,
    
    .info.alarm_interval = info->alarm_interval,
    
    .timer_counter_value = timer_counter_value
    
    };

  • //从中断中返回信息到while

  • xQueueSendFromISR(s_timer_queue, &evt, &high_task_awoken);
  • BaseType_t high_task_awoken = pdFALSE;该位保证队列接受到数据

二、例程效果

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值