电机(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参数
| 参数 | 类型 | 注释 |
|---|---|---|
| arr | u16 | 自动重装载值 |
| psc | u16 | 预分频系数 |
| 通过设定预分频系数和自动重装载值,可以控制PWM的输出频率 平衡小车案例中,默认取值为arr=2880, psc=0 | ||
Balance_Motor_Init(void)
使能小车电机连接的GPIO口时钟
Set_Pwm(int motor_left,int motor_right)
给小车左右电机发送PWM信号
| 参数 | 类型 | 注释 |
|---|---|---|
| motor_left | u16 | 左电机的PWM |
| motor_right | u16 | 右电机的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);
}