如果是直流有刷可以这么做
- #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秒
- }
- }
|