项目简介
本项目基于Arduino平台,借助Dx_Slow_PWM库在AVR Dx系列开发板上实现多通道PWM控制功能。该库利用硬件定时器中断,可实现64个同步PWM通道,具备高精度、长间隔且不被其他任务阻塞的特性,适用于对PWM控制精度和实时性要求较高的场景。
项目的主要特性和功能
- 支持最多64个基于ISR(中断服务程序)的同步PWM通道,仅消耗1个硬件定时器。
- PWM间隔可设得很长(uint64_t微秒/毫秒),执行精度高,受时钟频率准确性影响。
- 能在运行时动态更改PWM的频率、占空比等设置。
- 采用ISR方式,PWM执行不会被其他不良行为的函数或任务阻塞,适合关键任务。
- 支持AVRDA、AVRDB和AVRDD等基于DxCore的开发板。
安装使用步骤
前提条件
- 安装Arduino IDE 1.8.19或更高版本。
- 若使用特定示例,可能需要安装SimpleTimer库。
安装库
- 使用Arduino库管理器:在Arduino IDE中,通过库管理器搜索“Dx_Slow_PWM”并安装最新版本。
- VS Code & PlatformIO:安装VS Code和PlatformIO,通过库管理器搜索“Dx_Slow_PWM”进行安装,并使用示例中的
platformio.ini
文件确保依赖库自动安装。
使用步骤
- 初始化硬件定时器:在代码中选择合适的定时器,并初始化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_Array、
ISR_Changing_PWM`等,可根据需求选择并运行。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】