写一个按键按下TIM上调整PWM占空比50%的代码
时间: 2024-09-26 17:14:23 浏览: 35
在许多微控制器平台,如Arduino系列,你可以使用软件定时器(Timer)配合PWM信号来实现这个功能。这里是一个简单的例子,假设你正在使用Arduino Uno或类似板子,并且已有一个名为`pinPWM`的PWM输出引脚:
```cpp
#include <Arduino.h> // 包含Arduino库
// 假设PWM频率是50Hz,初始占空比为0%
int pinPWM = 9; // PWM输出引脚
int dutyCycle = 0;
void setup() {
pinMode(pinPWM, OUTPUT); // 设置PWM引脚为输出模式
TCCR2A = 0b00100000; // 初始化TCCR2A,开启定时器2并设置模式2 (CCT)
TCCR2B = 0b00000001; // 开启定时器2,CCP2作为PWM通道,OCR2A配置为最大值的一半(50%占空比)
OCR2A = 256 - dutyCycle; // 设置OCR2A,因为PWM的最大值是2^16-1,所以50%即是(2^16)/2
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) { // 如果按键按下
dutyCycle = 50; // 改变占空比为50%
OCR2A = 256 - dutyCycle;
} else { // 按键松开
dutyCycle = 0; // 回到初始占空比0%
OCR2A = 256;
}
analogWrite(pinPWM, dutyCycle); // 更新PWM的占空比
}
阅读全文