求助,探索板输出pwm波后电机不转且屏幕会亮

2019-08-14 15:26发布

新人,以前是学机械的,虽然看过正点原子的视频自学单片机,但是还是不能解决,请各位帮帮忙
板子是探索版F4,电调是天行者60A,电机是天蝎星的。
用PB15输出高电平,PD12输出pwm波。
电源连好线插好之后,电机不转只会“哔~”的响,而且屏幕会白屏亮起来,在把电调插在板子上之前是不会亮的。


这是pwm波的程序
#include "pwm.h"

void TIM4_PWM_Init(u32 arr,u32 psc)
{
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
peng1554
1楼-- · 2019-08-14 18:29
不能了 看探索者的原理图  PB15接的是液晶的BL引脚  用其他的输出通道吧
活尸化严重
2楼-- · 2019-08-14 23:07
上面程序没发出来
#include "pwm.h"

void TIM4_PWM_Init(u32 arr,u32 psc)
{
               
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);         
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);        
       
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;      
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;      
        GPIO_Init(GPIOD,&GPIO_InitStructure);            
          
        TIM_DeInit(TIM4);
        TIM_TimeBaseStructure.TIM_Prescaler=psc;  
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseStructure.TIM_Period=arr;   //×Ô¶ˉÖØ×°ÔØÖμ
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;

        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);
       
                 
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
        TIM_OC1Init(TIM4, &TIM_OCInitStructure);  

        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(TIM4,ENABLE);
       
        TIM_Cmd(TIM4, ENABLE);

                                                                                  
}  


PB15输出高电平的程序
#include "PB15output.h"

void PB15_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;  
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;  
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;  
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;  
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;  
        GPIO_Init(GPIOB,&GPIO_InitStructure);  
       
        GPIO_SetBits(GPIOB,GPIO_Pin_15);
       
}
主程序
#include "stm32f4xx.h"
#include "pwm.h"
#include "PB15output.h"
#include "delay.h"


int main (void)
{
        u16 pwmval=0;
       
        delay_init(168);
       
        GPIO_SetBits(GPIOB,GPIO_Pin_15);
       
        TIM4_PWM_Init(500-1,21-1);        //PWM频率选8kHz是因为电机参数有一行是drive frequency----8kHz
       
        pwmval=300;
        TIM_SetCompare1(TIM4,pwmval);
       
}

正点原子
3楼-- · 2019-08-15 00:36
 精彩回答 2  元偷偷看……
活尸化严重
4楼-- · 2019-08-15 02:10
自己顶一下
活尸化严重
5楼-- · 2019-08-15 04:07
正点原子 发表于 2017-8-11 23:47
帮顶

我想问一下会不会是板子上应该哪个接线帽应该拔掉什么之类的
wxjhby
6楼-- · 2019-08-15 09:32
本帖最后由 wxjhby 于 2017-8-14 10:24 编辑

加上这句试试 RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIOD ,ENABLE);

一周热门 更多>