Aily Blockly 辅助 ESP32-S3 开发教程2

Aily Blockly 辅助 ESP32-S3 开发教程2

第 6 章:定时器与 PWM

6.1 定时器概述

ESP32-S3 有2 组通用定时器,每组 2 个,共 4 个 64 位定时器,支持:

  • 一次性 / 周期性定时
  • 32 位预分频器
  • 定时中断

在 Aily Blockly 中,定时器积木封装了底层配置,使用简单:

积木功能
延时 [x] 毫秒阻塞延时
延时微秒 [x]微秒级阻塞延时
当前毫秒数获取系统运行时间
初始化定时器 [TIMx] 周期 [x]ms 中断配置定时中断
初始化 PWM 通道 [GPIO] 频率 [x]Hz配置 PWM 输出
设置 PWM 占空比 [GPIO] 为 [x]%设置 PWM 占空比

6.2 项目:呼吸灯(PWM 渐变)

呼吸灯是 PWM 最经典的应用,通过连续改变占空比实现 LED 亮度渐变。

硬件连接
ESP32-S3 GPIO2 ───[ 220Ω ]─── LED(+) ─── GND
积木程序
当启动时 ├─ 初始化 PWM 通道 GPIO2 频率 5000Hz ├─ 创建变量 brightness = 0 ├─ 创建变量 step = 5 ├─ 永远重复 │ ├─ 设置 PWM 占空比 GPIO2 为 brightness │ ├─ brightness = brightness + step │ ├─ 如果 brightness >= 100 或 brightness <= 0 │ │ └─ step = -step (改变方向) │ └─ 延时 30 毫秒
生成的 C 代码
#include"driver/ledc.h"#include"freertos/FreeRTOS.h"#include"freertos/task.h"#defineLED_GPIO2voidapp_main(void){ledc_timer_config_ttimer_conf={.speed_mode=LEDC_LOW_SPEED_MODE,.duty_resolution=LEDC_TIMER_8_BIT,.timer_num=LEDC_TIMER_0,.freq_hz=5000,.clk_cfg=LEDC_AUTO_CLK};ledc_timer_config(&timer_conf);ledc_channel_config_tledc_conf={.gpio_num=LED_GPIO,.speed_mode=LEDC_LOW_SPEED_MODE,.channel=LEDC_CHANNEL_0,