中级会员
 
- 积分
- 208
- 金钱
- 208
- 注册时间
- 2018-8-3
- 在线时间
- 35 小时
|
8金钱
最近在做控制小车两路电机实现小车的左转右转、直行后退,通过电机驱动来给电机输入逻辑信号。
但是遇到了一个严重的问题,就是电机要么只能一直在转,要么一直不转。下面是一路电机的测试代码,
各位大佬且帮我看看
#include <sys.h>
#include <delay.h>
#include <stm32f10x.h>
void GPIOb_Init(void);
int main()
{
GPIOb_Init();//GPIO初始化
GPIO_SetBits(GPIOB,GPIO_Pin_2);//1
GPIO_ResetBits(GPIOB,GPIO_Pin_3);//0
delay_ms(3000);//延时
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//0
GPIO_ResetBits(GPIOB,GPIO_Pin_3);//0
delay_ms(3000);//延时
}
void GPIOb_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化PB0~15
//GPIO_ResetBits(GPIOB,GPIO_Pin_0);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//GPIO_ResetBits(GPIOB,GPIO_Pin_1);
}
本来程序的理想运行结果为电机转动3秒,停止3秒,但是结果却是一直在转根本停不下来的那种,百度了一下看到控制直流电机需要用到PWM
但是我只是控制电机正转反转和停止,不需要用到调速,不用PWM能实现吗?
各位i路过的大神帮我解答一下,感谢!!!
|
|