引言
上节课我们进行了对电机的初始化,今天我们开始构建电机的使用函数。
电机代码
产生速度
对于小车来说,所有函数都是服务于让小车按照我们的要求移动,所以我们在初始化完就需要写出一个使小车动手起来的函数。
这个函数最好可以给小车的两个电机配速,达到我们变速的要求!!!
先理一下思路!以左面的电机为例·。当我们的IN1为逻辑正IN2为逻辑负时我们的电机正转。所以本质上就是控制IN1与IN2的电压值。我们使用的是PWM模式,所以对电压的控制就是对电压占空比的控制,那么库函数有没有对占空比函数的设置呢!
看这里:
这不就是吗,所以直接操作我们的比较寄存器!但是注意看这是通道一的比较寄存器。我们有的四个通道!
所以我写一个速度函数,让他们配置四个变量!
完善一下吧!这样子我们就可以自己设置通道了。
void speed(uint8_t speed1 ,uint8_t speed2 ,uint8_t speed3 ,uint8_t speed4)
{
TIM_SetCompare1(TIM4,speed1);
TIM_SetCompare2(TIM4,speed2);
TIM_SetCompare3(TIM4,speed3);
TIM_SetCompare4(TIM4,speed4);
}
小车前进
知道产生速度了你就一定会如何控制小车前进了!我这里不做推理直接附上代码。
void qianjin (uint8_t pwm)
{
if(pwm>100)
{
pwm=100;
}
speed(pwm,0,pwm,0);
}
注意我们这里的pwm一定要控制大小,这里的if函数是为了移植后大家给值给大了!
小车后退
void houtui(pwm)
{
if(pwm>100)
{
pwm=100;
}
speed(0,pwm,0,pwm);
}
接下来小车的左转右转,左旋转右旋转你自己会写了吧我就不列举了!
主函数
到了使用部分了,我们一步一步过来的所以你一定不会晕的!
while(1)
{
qianjin(50);
delay_s(5);
tingzhi();
zuozhuan(60);
delay_s(2);
tingzhi();
}
当然在实际使用中一定要加延时!不断的调试!很多问题都是因为延时问题导致代码无法被读取而造成的!!!!
明天就到了我们的布线了!其等待一下吧!
标签:起来,函数,1.3,小车,电机,uint8,TIM,pwm From: https://blog.csdn.net/2301_76726104/article/details/140424593