如果是直流有刷可以这么做
#include "HC89S105A.h"
void PWM_Init(void) {
// 设置PWM频率和占空比
PWM_CFG = 0x01; // 选择PWM通道1
PWM_CK = 0x03; // 设置时钟分频
PWM_PR = 100; // 设置周期值
PWM_DR = 50; // 设置占空比
PWM_CR = 0x01; // 使能PWM通道1
}
void Set_Motor_Speed(uint8_t speed) {
// 设置占空比控制电机速度
if (speed > 100) speed = 100; // 限制最大占空比
PWM_DR = speed; // 更新占空比
}
void main(void) {
PWM_Init(); // 初始化PWM
while (1) {
Set_Motor_Speed(30); // 设置电机速度为30%
Delay_ms(2000); // 延时2秒
Set_Motor_Speed(70); // 设置电机速度为70%
Delay_ms(2000); // 延时2秒
}
}
|