EPS32 定时器操作 timer实验 - MilkeZhang 的网络笔记

实验现象:程序运行后配置高分辨率定时器,并开启中断,在中断回调函数中翻转LED的状态。esptim.h文件负责声明ESPTIMER相关的函数和变量,而esptim.c文件则实现了ESPTIMER的驱动代码。esptim.h#include "freertos/FreeRTOS.h" #include "freertos/task.h" #include &q

MilkeZhang

EPS32 定时器操作 timer实验

阅读:74  点赞:0   留言:0


实验现象:程序运行后配置高分辨率定时器,并开启中断,在中断回调函数中翻转LED的状态。


esptim.h文件负责声明ESPTIMER相关的函数和变量,而esptim.c文件则实现了ESPTIMER的驱动代码。


esptim.h

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_timer.h"
#include "led.h"


/* 函数声明 */
void esptim_int_init(uint64_t tps);                 /* 初始化初始化高分辨率定时器 */
void esptim_callback(void *arg);                    /* 定时器回调函数 */


esptim.c

#include "esptim.h"


/**
 * @brief       初始化高精度定时器(ESP_TIMER)
 * @param       tps: 定时器周期,以微妙为单位(μs),以一秒为定时器周期来执行一次定时器中断,
 *                   那此处tps = 1s = 1000000μs
 * @retval      无
 */

void esptim_int_init(uint64_t tps)
{
    esp_timer_handle_t esp_tim_handle;                      /* 定时器回调函数句柄 */

    /* 定义一个定时器结构体 */
    esp_timer_create_args_t tim_periodic_arg = {
        .callback = &esptim_callback,                       /* 设置回调函数 */
        .arg = NULL,                                        /* 不携带参数 */
    };

    esp_timer_create(&tim_periodic_arg, &esp_tim_handle);   /* 创建一个事件 */
    esp_timer_start_periodic(esp_tim_handle, tps);          /* 每周期内触发一次 */
}

/**
 * @brief       定时器回调函数
 * @param       arg: 不携带参数
 * @retval      无
 */
void esptim_callback(void *arg)
{
    LED_TOGGLE();
}


main.c


#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "nvs_flash.h"
#include "led.h"
#include "esptim.h"


/**
 * @brief       程序入口
 * @param       无
 * @retval      无
 */
void app_main(void)
{
    esp_err_t ret;
    
    ret = nvs_flash_init();         /* 初始化NVS */

    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
    {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }
    
    led_init();                     /* 初始化LED */
    esptim_int_init(1000000);       /* 初始化高分辨率定时器,此处设置定时器周期为1秒,
                                       但该函数事宜微妙为单位进行计算,
                                       故而1秒钟换算为1000000微秒 */
}



ESPTIMER的初始化代码中可以看到,结构体esp_timer_create_args_t通过其中两个结构体成员,以指针的形式调用定时器回调函数。

传入的参数 tim_periodic_arg,目的在于方便后续的调用,而 esp_timer_create()函数便是通过指针的方式完成对该结构体的调用,之后再通过esp_timer_start_periodic()函数设定周期,最终完成ESPTIMER的初始化配置。

在定时器回调函数中,我们调用了LED状态翻转函数,并设定,定时器的每一次计数溢出都会翻转一次LED的状态。

ESP定时器的周期值配置为1000000,因为ESP32-S3高分辨率定时器的计数周期是以微秒作为基础单位进行运算,所以当我们设定计数周期为 1秒时需要将单位换算为微秒。因此LED的闪烁周期为1



编写于:2024/11/13 15:52:07
发布 IP 属地:广东省深圳市

版权声明

本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!


艾金森

每一个童年的梦想都值得用青春去捍卫!




用户地图 心情地图 日记地图 笔记地图 时间轴地图 投票地图 习题地图 24.8.5回到我的世界里:我不要再这么颓废了颈肩腰腿痛独特秘方绝招11月23日简赤jc 的日记 2024/06/25 12:53:37risk 的日记 2024/11/25 15:21:44为什么这种东西还存在于中国的书店啊2007年星洲日报讲解自杀。10-910-232024年的第一场秋雨Jun Peng Cui 的日记 2024/08/23 15:25:05简赤jc 的日记 2024/08/30 20:19:30我找到oc文了2024.10.25 我要我记得,记得今天一场满足的拥抱risk 的日记 2024/11/25 15:21:44渣男的婚外情故事2007年星洲日报讲解通宵读书。#空气一少,医生的手术刀就在你的身体乱乱开刀8月1日恢复中第二天咯24.4.11夜:麻木、我想成为更丰富的人oc相关Food2024-06-17 Web开发记录【心情新增配图功能】24.7.21栀子味蓝色小狗会害怕鱼头汤吗07/07/2024时代变了,课外读物变了没有啊?清浅 的日记 2024/12/08 11:16:17ZLL 的日记 2024/08/29 16:36:31看了一个非常好看的国耽美,戒断反应严重!!简赤jc 的日记 2024/06/22 21:45:33关于自知力思考22/11/20242024年4月15日戒烟的启示性时刻高考志愿填报讲解大学专业之医学类20集自助餐。。。8年后的。。。简赤jc 的日记 2024/06/25 19:26:19只是放淡了些许茶文化博览 中国茶韵24.9.3 “一家三口”的放学羁绊!回归!平淡家庭急救100招木瓜的故事1510.28复盘灵感堆积,回来再写24.11.17 写完作业好幸福。团聚好幸福。小猫要快快好起来呀…恐惧对我们的影响过大了安 的日记 2024/10/18 08:56:022007年的星洲日报是很有意义的。UL4200A检测报告GCC证书20240728如何更改Element UI的this.$confirm按钮样式心学随笔一视频清晰度分级规则:SD、HD、FHD、UHD常用网络端口html input 上传图片的方法视频编解码协议 【MPEG-4】【H.264】【H.265】【VP9】【AV1】【AVS】【VP8】【Datasheet】AX3071UA DC-DC电源系统架构设计师论文《论单元测试方法及应用》知识点铂鹿 的笔记 2024/06/10 11:48:09浅浅记录一下js 函数过多?满山的猴子我腚最红 的笔记 2024/10/23 20:59:16挨打也能成为一项超能力刮痧疗法彩色图谱软考架构-架构风格系统架构设计师论文《论信息系统的安全体系》EPS32 基础GPIO操作 LED实验赫兹伯格的卫生理论系统架构设计师论文《论中间件在SIM卡应用开发中的作用》引子文章练习420240722ESP32 【ESP_ERROR_CHECK】说明小说中让人突然下头的行为(01)高考志愿填报讲解大学专业之师范教育类EPS32 外部中断EXIT操作 KEY实验【Datasheet】FD6288T 三个独立的半桥栅极驱动集成电路芯片系统架构设计师论文《论信息系统架构的设计》现在才有闲情看得下书,但我却在迷茫。10.10系统架构设计师-22年-论文题目ZXF高考志愿填报全攻略54项【Datasheet】SCT2A10STER DC-DC电源芯片关于游戏——Part2HTML input type="number" 不显箭头英语老教授又想圈钱了老年人营养保健手册(专业版)不想学外语的思考瑞芯微RK3568对比RK3399性能解析Visual Studio和Visual Studio Code有什么区别系统架构设计师论文《论基于UML的需求分析》爱别太迟。高考志愿填报讲解大学专业之电子信息及计算机类视频编解码协议 MPEG-4 和 H.264之间的区别系统架构设计师论文《论面向服务架构设计及其应用》NoSQL 非关系型数据库书单成瘾丨240726 基层公务员读物C语言根据日期判断星期几(使用基姆拉尔森计算公式)