OpenEdv-开源电子网

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

请大佬指点迷津

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2017-6-16
在线时间
0 小时
发表于 2017-6-16 20:57:51 | 显示全部楼层 |阅读模式
1金钱
用战舰版控制直流电机,为什么没反应呢

QQ图片20170616205351.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2017-6-16
在线时间
0 小时
 楼主| 发表于 2017-6-16 21:00:45 | 显示全部楼层
用的驱动器是这个,现在只是让电机正转,没有调速
QQ截图20170616205936.png
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2017-6-16
在线时间
0 小时
 楼主| 发表于 2017-6-16 21:02:32 | 显示全部楼层
代码是这样的
#include "stm32f10x.h"
#include "motor.h"
#include "sys.h"

//×ó??3?ê??ˉ
        
void        MotorDriver_L_Config(void){
        
        GPIO_InitTypeDef                                        GPIO_InitStructure ;
        TIM_TimeBaseInitTypeDef                TIM_BaseInitStructure;
        TIM_OCInitTypeDef                                        TIM_OCInitStructure;
        
        /*ê1?üGPIOB?¢TIM4íaéèê±?ó*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_TIM1, ENABLE);
        
        /*3?ê??ˉPB6???ú?aOut_PP?£ê?*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        /*3?ê??ˉPB8???ú?aOut_PP?£ê?*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        /*3?ê??ˉPA7???ú(TIM4_CH2)?aAF_PP?£ê?í?íìê?3?*/
        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);
        
        /*?¨ê±?÷?ù±?????time3 μ? ch2í¨μà*/
        TIM_BaseInitStructure.TIM_Prescaler = 3-1;                                                                        //ê±?ó?¤·??μêy3,TIM8μ???êyê±?ó?μ?ê?a24MHz
        TIM_BaseInitStructure.TIM_Period = 1000-1;                                                                        //×??ˉ??×°????′??÷êy?μ,PWM2?μ?ê?a24MHz/1000=24KHz
        TIM_BaseInitStructure.TIM_ClockDivision = 0;                                                                //2é?ù·??μ
        TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;                                        //?òé???êy                        
        TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);

        
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                                    /*PWM2  ch2ê?3??£ê?WM?£ê?2£- ?ú?òé???êyê±£?
                                                                                                                                                                ò?μ?TIMx_CNT<TIMx_CCR1ê±í¨μà1?a?TD§μ???£?·??ò?a
                                                                                                                                                                óDD§μ???£??ú?ò????êyê±£?ò?μ?TIMx_CNT>TIMx_CCR1ê±í¨μà1?aóDD§μ???
                                                                                                                                                                £?·??ò?a?TD§μ????£*/
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                                //ê1?ü??í¨μàê?3?
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                                        //ê?3???D?
        TIM_OC4Init(TIM1, &TIM_OCInitStructure);                                                                        //°′???¨2?êy3?ê??ˉ

        TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);                                                        //ê1?üTIM8?úCCRé?μ??¤×°????′??÷
        TIM_ARRPreloadConfig(TIM1, ENABLE);                                                                                        //ê1?üTIM8?úARRé?μ??¤×°????′??÷
        
        TIM_Cmd(TIM1, ENABLE);                                                                                                                //ê1?üTIM8
}


//óò??3?ê??ˉ
void        MotorDriver_R_Config(void){

        GPIO_InitTypeDef                                        GPIO_InitStructure ;
        TIM_TimeBaseInitTypeDef                TIM_BaseInitStructure;
        TIM_OCInitTypeDef                                        TIM_OCInitStructure;

        /*ê1?üGPIOc?¢TIM8íaéèê±?ó*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC  | RCC_APB2Periph_TIM8, ENABLE);

        /*3?ê??ˉPB10???ú?aOut_PP?£ê?*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        /*3?ê??ˉPB.111???ú?aOut_PP?£ê?*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        /*3?ê??ˉPC.09???ú(TIM8_CH4)?aAF_PP?£ê?*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        /*?¨ê±?÷?ù±?????time8 μ? ch4í¨μà*/
        TIM_BaseInitStructure.TIM_Prescaler = 3-1;                                        //ê±?ó?¤·??μêypsc=3,TIM8μ???êyê±?ó?μ?ê?a24MHz
        TIM_BaseInitStructure.TIM_Period = 1000-1;                                        //×??ˉ??×°????′??÷êy?μarr=1000,PWM2?μ?ê?a24MHz/1000=24KHz
        TIM_BaseInitStructure.TIM_ClockDivision = 0;                                                                                                //2é?ù·??μ
        TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;                                        //?òé???êy
        TIM_TimeBaseInit(TIM8, &TIM_BaseInitStructure);

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                                                                //PWM2  ch2ê?3??£ê?
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                                //ê1?ü??í¨μàê?3?
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                                                //ê?3???D?
        TIM_OC4Init(TIM8, &TIM_OCInitStructure);                                                                                                                //°′???¨2?êy3?ê??ˉ

        TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);                                                                                //ê1?üTIM8?úCCRé?μ??¤×°????′??÷
        TIM_ARRPreloadConfig(TIM8, ENABLE);                                                                                                                                        //ê1?üTIM8?úARRé?μ??¤×°????′??÷
        
        TIM_Cmd(TIM8, ENABLE);                                                                                                                                                                                        //′ò?aTIM8
}

void        MotorDriver_L_Turn_Forward(void){                        //×ó??μ??ú?y×a
            
            GPIO_SetBits(GPIOB, GPIO_Pin_5);
            GPIO_ResetBits(GPIOB, GPIO_Pin_6);
         
            GPIO_SetBits(GPIOC, GPIO_Pin_10);
}

//void        MotorDriver_L_Turn_Reverse(void){                        //×ó??μ??ú·′×a
//        
//            GPIO_SetBits(GPIOB, GPIO_Pin_6);
//            GPIO_ResetBits(GPIOB, GPIO_Pin_5);

//}

//void        MotorDriver_R_Turn_Forward(void){                        //óò??μ??ú?y×a
//        
//            GPIO_SetBits(GPIOC, GPIO_Pin_10);
//            GPIO_ResetBits(GPIOC, GPIO_Pin_11);
//}

//void        MotorDriver_R_Turn_Reverse(void){                        //óò??μ??ú·′×a
//        
//            GPIO_SetBits(GPIOC, GPIO_Pin_11);
//            GPIO_ResetBits(GPIOC, GPIO_Pin_10);
//}

void        MotorDriver_L_Turn_Stop(void)                                //×ó??μ??ú???ˉ
{
            GPIO_ResetBits(GPIOB, GPIO_Pin_5);
            GPIO_ResetBits(GPIOB, GPIO_Pin_6);
            
            //GPIO_SetBits(GPIOC, GPIO_Pin_10);
}
//void        MotorDriver_R_Turn_Stop(void)                                //óò??μ??ú???ˉ
//{
//            GPIO_ResetBits(GPIOC, GPIO_Pin_10);
//            GPIO_ResetBits(GPIOC, GPIO_Pin_11);
//}

void        MotorDriver_Init(void){
        
            MotorDriver_R_Config();
            MotorDriver_L_Config();
        
            MotorDriver_L_Turn_Stop();                                //×ó??μ??ú???ˉ
        //MotorDriver_R_Turn_Stop();                                //óò??μ??ú???ˉ
}
#include "motor.h"
#include "delay.h"

int main(void)
{
    delay_init();
    MotorDriver_Init();
             
    while(1)
    {
         MotorDriver_L_Turn_Forward( );                        //水平电机正转
//                    delay_ms(2000);
//       MotorDriver_L_Turn_Reverse();                                         //水平电机反转
//                    delay_ms(2000);
//       MotorDriver_L_Turn_Stop();                                          //水平电机制动
//                    delay_ms(2000);
    }   
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-18 19:07:33 | 显示全部楼层
开发板电源,估计不够驱动你这电机。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

35

主题

193

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
476
金钱
476
注册时间
2015-12-27
在线时间
116 小时
发表于 2017-6-19 13:56:12 | 显示全部楼层
你的驱动板都没有接6-27V的电源,战舰的板子,驱动能力应该不足以驱动你这么大个的直流电机啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 16:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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