Vscode(arduino框架) 开发ESP32 _02_timer_pwm

这篇博客介绍了如何在VSCode环境下,使用Arduino框架开发ESP32的定时器和PWM功能。文章通过分析Motor.cpp和Motor.h源程序,阐述了PWM波形产生的原理,并提醒在使用定时器和PWM时注意选择不同的定时器。作者还提及了在尝试使用arduino IDE的Servo库时遇到的不兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ESP32_定时器Timer&PWM

一、主程序代码

#include <Arduino.h>
#include "../lib/Motor/Motor.h"

#define PMW_EN 1

int interruptCounter = 0;
hw_timer_t *timer = NULL;

//	函数名称:onTimer()
//	函数功能:中断服务的功能,它必须是一个返回void(空)且没有输入参数的函数
//  为使编译器将代码分配到IRAM内,中断处理程序应该具有 IRAM_ATTR 属性
//  https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.3/esp32/api-reference/storage/spi_flash_concurrency.html
void IRAM_ATTR TimerEvent()
{
   
   
    Serial.println(interruptCounter++);
    if (interruptCounter > 5)
    {
   
   
        interruptCounter = 1;
    }
}
void setup()
{
   
   
    Serial.begin(115200);

#if PMW_EN

    Motor_Init();

#endif

    //	函数名称:timerBegin()
    //	函数功能:Timer初始化,分别有三个参数
    //	函数输入:1. 定时器编号(0到3,对应全部4个硬件定时器)
    //			 2. 预分频器数值(ESP32计数器基频为80M,80分频单位是1us)
    //			 3. 计数器向上(true)或向下(false)计数的标志
    //	函数返回:一个指向 hw_timer_t 结构类型的指针
    timer = timerBegin(0, 80, true);

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值