littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于Arduino的DxSlowPWM多通道PWM控制系统

项目简介

本项目基于Arduino平台,借助Dx_Slow_PWM库在AVR Dx系列开发板上实现多通道PWM控制功能。该库利用硬件定时器中断,可实现64个同步PWM通道,具备高精度、长间隔且不被其他任务阻塞的特性,适用于对PWM控制精度和实时性要求较高的场景。

项目的主要特性和功能

  1. 支持最多64个基于ISR(中断服务程序)的同步PWM通道,仅消耗1个硬件定时器。
  2. PWM间隔可设得很长(uint64_t微秒/毫秒),执行精度高,受时钟频率准确性影响。
  3. 能在运行时动态更改PWM的频率、占空比等设置。
  4. 采用ISR方式,PWM执行不会被其他不良行为的函数或任务阻塞,适合关键任务。
  5. 支持AVRDA、AVRDB和AVRDD等基于DxCore的开发板。

安装使用步骤

前提条件

  1. 安装Arduino IDE 1.8.19或更高版本。
  2. 若使用特定示例,可能需要安装SimpleTimer库。

安装库

  • 使用Arduino库管理器:在Arduino IDE中,通过库管理器搜索“Dx_Slow_PWM”并安装最新版本。
  • VS Code & PlatformIO:安装VS Code和PlatformIO,通过库管理器搜索“Dx_Slow_PWM”进行安装,并使用示例中的platformio.ini文件确保依赖库自动安装。

使用步骤

  1. 初始化硬件定时器:在代码中选择合适的定时器,并初始化Dx_Slow_PWM对象。示例代码如下: ```cpp

define USING_FULL_CLOCK true

define USE_TIMER_1 true

if USE_TIMER_1

#define CurrentTimer ITimer1

endif

Dx_Slow_PWM ISR_PWM; 2. **设置PWM参数**:在`setup()`函数中设置PWM的引脚、频率、占空比,并可附加启动和停止回调函数。示例代码如下:cpp void irqCallbackStartFunc() { // 启动回调函数代码 } void irqCallbackStopFunc() { // 停止回调函数代码 } void setup() { ISR_PWM.setPWM(PWM_Pin, PWM_Freq, PWM_DutyCycle, irqCallbackStartFunc, irqCallbackStopFunc); } `` 3. **运行示例**:项目中提供了多个示例,如ISR_8_PWMs_ArrayISR_Changing_PWM`等,可根据需求选择并运行。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】