OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13820|回复: 6

用mini板子做的循迹小车,程序下载里面后,电机不转,没有电压??

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2015-9-16
在线时间
15 小时
发表于 2018-12-7 10:26:45 | 显示全部楼层 |阅读模式
2金钱
用STM32mini开发板做的循迹小车,程序下载到里面后,电机没有电压,具体程序如下:我在主函数调用一个LED灯,却可以使用,调用电机,电机却不转??
PWM.C
#include "pwm.h"
#include "sensor.h"

void TIM1_PWM_Init(u16 arr,u16 psc)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);               
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        TIM_TimeBaseStructure.TIM_Period=arr-1;
        TIM_TimeBaseStructure.TIM_Prescaler=psc-1;
        TIM_TimeBaseStructure.TIM_ClockDivision=0;
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
       
       
        TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
        TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
        TIM_OC4Init(TIM1,&TIM_OCInitStructure);
       
       
        TIM_CtrlPWMOutputs(TIM1,ENABLE);
       
        TIM_ARRPreloadConfig(TIM1,ENABLE);
        TIM_OC4PreloadConfig(TIM1,TIM_OCPreload_Enable);
        TIM_Cmd(TIM1,ENABLE);
}

SENSOR.C
#include "sensor.h"
#include "delay.h"
void Sensor_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
}

u8 SEN_Scan(u8 mode)
{
        static u8 key_up=1;
        if(mode)key_up=1;
        if(key_up&(Sen1==0||Sen2==0||Sen3==0||Sen4==0))
        {
                delay_ms(10);
                key_up=0;
                if(Sen1==0)
                        return   Sen1_State;
                else if(Sen1==0&&Sen2==0)
                        return   Sen2_State;
                else if(Sen2==0)
                        return  Sen3_State;
                else if(Sen2==0&&Sen3==0)
                        return  Sen4_State;
                else if(Sen3==0)
                        return Sen5_State;
                else if(Sen3==0&&Sen4==0)
                        return Sen6_State;
                else if(Sen4==0)
                        return Sen7_State;               
  }
        else if(Sen1==1&&Sen2==1&&Sen3==1&&Sen4==1)
                key_up=1;
        return 0;

}

                                                               motor.c
#include "motor.h"

void Motor_GPIO_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);       
}

void MotorRightLeft(u8 rorl)
{
        if(rorl==1)
        {
                GPIO_SetBits(GPIOA,GPIO_Pin_4);
                GPIO_ResetBits(GPIOA,GPIO_Pin_5);
                GPIO_SetBits(GPIOC,GPIO_Pin_4);
                GPIO_ResetBits(GPIOC,GPIO_Pin_5);
    }
        if(rorl==2)
        {
                GPIO_SetBits(GPIOA,GPIO_Pin_5);
                GPIO_ResetBits(GPIOA,GPIO_Pin_4);
                GPIO_SetBits(GPIOC,GPIO_Pin_5);
                GPIO_ResetBits(GPIOC,GPIO_Pin_4);
    }
       

}
                        main.c
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "motor.h"
#include "sensor.h"
#include "led.h"

int main(void)
{
        u8 t;
        delay_init();       
        TIM1_PWM_Init(1000,3);
         LED_Init();
        Sensor_Init();
  while(1)
{
                t=SEN_Scan(0);
                switch(t)
                {
                                case Sen1_State:
                                {
                                        LED1=!LED1;
//                                        MotorRightLeft(1);
//                                         TIM_SetCompare4(TIM1,200);
                                        break;
                                }
//                                 case Sen2_State:
//                                 {
//                                         MotorRightLeft(2);
//                                         TIM_SetCompare4(TIM1,400);

//                                 }
                                default:
                                        delay_ms(10);
         }               
}       
}











最佳答案

路漫漫其修远兮吾将上下为求索!!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2015-9-16
在线时间
15 小时
 楼主| 发表于 2018-12-7 10:26:46 | 显示全部楼层
路漫漫其修远兮吾将上下为求索!!!!
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-4-10
在线时间
3 小时
发表于 2019-4-24 15:58:17 | 显示全部楼层
有哪一步不对吗?
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-5-7
在线时间
2 小时
发表于 2019-5-7 15:10:33 | 显示全部楼层
我也是,我在led历程里面写得,led灯可以亮电机不动
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-5-7
在线时间
2 小时
发表于 2019-5-7 15:12:08 | 显示全部楼层
我也是,我在led历程里面写得,led灯可以亮电机不动
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2020-1-13
在线时间
8 小时
发表于 2020-9-29 10:01:08 | 显示全部楼层
key_scan(1)
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-10-15
在线时间
3 小时
发表于 2020-10-22 14:26:09 | 显示全部楼层
平衡算法对时序要求很高,不能加延时等操作 否则电机不顺畅哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表