关于官方提供的地盘电机驱动板的问题
![快乐的小2B](https://hz-rm-bbs-web-prod.oss-cn-hangzhou.aliyuncs.com/avatar/pre/v1/000000456_avatar_big.jpg)
官方给的板子。没有保护好像。。有的时候会烧板子。。我也正在研究原因。。知道的大神多多指教。。
这是我写的程序。。共享出来。。请各位大神给看看。。有没有什么原则性的问题。谢谢啦。
#include "main.h"
int motor_state=1;
short motor_speed=0;
//PA8----EN
//PA9----PWM---TIM1_CH2
//PA10---EN
//PA11---PWM---TIM1_CH4
//试试9,10 一对 8,11,一对
//TIM1->CCER=0<<4; ch2
//TIM1->CCER=0<<12; ch4
/*************************************************************************
PWM初始化
*************************************************************************/
void motor_data_deal(int value)
{
if(value!=0)
{
if(value>0)
{
motor_speed=value;
motor_state=2;
}
else
{
motor_speed=-value;
motor_state=0;
}
}
else
{
motor_speed=0;
motor_state=1;
}
}
void MOTOR_RUN( char state ,short speed)
{
// GPIO_ResetBits(GPIOA,GPIO_Pin_8);
//GPIO_ResetBits(GPIOA,GPIO_Pin_10);
if(state!=1)
{
if(state>1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_10);//10
GPIO_ResetBits(GPIOA,GPIO_Pin_8);//8
TIM1->CCER=0<<4; //ch2
TIM1->CCER=0<<12; //ch4
TIM1->CCR2=(uint16_t)5000-speed;//9 pwm
TIM1->CCER=1<<4; //ch2
GPIO_SetBits(GPIOA,GPIO_Pin_10);//8
}
else
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);//10
GPIO_ResetBits(GPIOA,GPIO_Pin_10);//8
TIM1->CCER=0<<4; //ch2
TIM1->CCER=0<<12; //ch4
TIM1->CCR4=(uint16_t)5000-speed;//9 pwm
TIM1->CCER=1<<12; //ch4
GPIO_SetBits(GPIOA,GPIO_Pin_8);//8
}
}
else
{
TIM1->CCER=0<<4; //ch2
TIM1->CCER=0<<12; //ch4
TIM1->CCR2=0;
TIM1->CCR4=0;
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOA,GPIO_Pin_10);
}
}
这是我写的程序。。共享出来。。请各位大神给看看。。有没有什么原则性的问题。谢谢啦。
#include "main.h"
int motor_state=1;
short motor_speed=0;
//PA8----EN
//PA9----PWM---TIM1_CH2
//PA10---EN
//PA11---PWM---TIM1_CH4
//试试9,10 一对 8,11,一对
//TIM1->CCER=0<<4; ch2
//TIM1->CCER=0<<12; ch4
/*************************************************************************
PWM初始化
*************************************************************************/
void motor_data_deal(int value)
{
if(value!=0)
{
if(value>0)
{
motor_speed=value;
motor_state=2;
}
else
{
motor_speed=-value;
motor_state=0;
}
}
else
{
motor_speed=0;
motor_state=1;
}
}
void MOTOR_RUN( char state ,short speed)
{
// GPIO_ResetBits(GPIOA,GPIO_Pin_8);
//GPIO_ResetBits(GPIOA,GPIO_Pin_10);
if(state!=1)
{
if(state>1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_10);//10
GPIO_ResetBits(GPIOA,GPIO_Pin_8);//8
TIM1->CCER=0<<4; //ch2
TIM1->CCER=0<<12; //ch4
TIM1->CCR2=(uint16_t)5000-speed;//9 pwm
TIM1->CCER=1<<4; //ch2
GPIO_SetBits(GPIOA,GPIO_Pin_10);//8
}
else
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);//10
GPIO_ResetBits(GPIOA,GPIO_Pin_10);//8
TIM1->CCER=0<<4; //ch2
TIM1->CCER=0<<12; //ch4
TIM1->CCR4=(uint16_t)5000-speed;//9 pwm
TIM1->CCER=1<<12; //ch4
GPIO_SetBits(GPIOA,GPIO_Pin_8);//8
}
}
else
{
TIM1->CCER=0<<4; //ch2
TIM1->CCER=0<<12; //ch4
TIM1->CCR2=0;
TIM1->CCR4=0;
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOA,GPIO_Pin_10);
}
}
请问这篇文章对你有用吗?
关于官方提供的地盘电机驱动板的问题