电机(Motor)

宏定义

左电机PWM
#define L_PWMA TIM8->CCR1
#define L_PWMB TIM8->CCR2

右电机PWM
#define R_PWMA TIM8->CCR3
#define R_PWMB TIM8->CCR4

方法

Balance_PWM_Init(u16 arr,u16 psc)

初始化PWM参数

参数类型注释
arru16自动重装载值
pscu16预分频系数
通过设定预分频系数和自动重装载值,可以控制PWM的输出频率
平衡小车案例中,默认取值为arr=2880, psc=0

Balance_Motor_Init(void)

使能小车电机连接的GPIO口时钟

Set_Pwm(int motor_left,int motor_right)

给小车左右电机发送PWM信号

参数类型注释
motor_leftu16左电机的PWM
motor_rightu16右电机的PWM
PWM为正数时正转(小车前进方向),为负数时反转(小车后退方向)
电机有效PWM范围与设定的PWM自动重装载值有关,默认arr=2880时,PWM有效范围为1500~2880

使用示例

1. 务必先执行Balance_Motor_Init(),再执行Balance_PWM_Init()

2. 驱动电机时,请记得打开小车电源开关

3. 如果要使用编码器Encoder, 请确保初始化电机的函数要在初始化编码器定时器的函数之前调用!!


#include <Motor.h>
#include <delay.h>
Balance_Motor_Init();
Balance_PWM_Init(2880, 0);
while(1) {
    Set_Pwm(2200, 0);
    delay_ms(2000);
    Set_Pwm(0, 0);
    delay_ms(2000);
    Set_Pwm(0, 2200);
    delay_ms(2000);
    Set_Pwm(0, 0);
    delay_ms(2000);
}