野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12350|回复: 3

stm32f4控制机械爪实验

[复制链接]
发表于 2019-4-17 15:42:20 | 显示全部楼层 |阅读模式
我想用stm32f4控制机械手的张开和闭合,已经写了一部分,但是连接到PA8管脚上动不起来,求大佬指点
#include "pwm.h"
/*******************************************************************************

*******************************************************************************/
void TIM1_CH1_PWM_Init(u16 pre,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//

GPIO_PinAFConfig(GPIOF,GPIO_PinSource8,GPIO_AF_TIM1);//
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//­
GPIO_Init(GPIOF,&GPIO_InitStructure); //


TIM_TimeBaseInitStructure.TIM_Period=pre;   //
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OC1Init(TIM1,&TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable); //Ê
TIM_ARRPreloadConfig(TIM1,ENABLE);//

TIM_CtrlPWMOutputs(TIM1,ENABLE);


TIM_Cmd(TIM1,ENABLE); //
  
}
void servo_init(void)
{
  TIM1_CH1_PWM_Init(SERVO_TIM_PRE,SERVO_TIM_PSC);
  TIM_SetCompare1(TIM1,150);
}
void servo_angle(uint16_t angle)
{
  uint16_t pulse;
if(angle<=0)
  angle=0;
if(angle>=180)
  angle=180;
pulse=(uint16_t)(50+angle*100/90.0);
TIM_SetCompare1(TIM1,pulse);

}

void servo_debug(void)
{
  uint8_t i;
for(i=0;i<10;++i)
{
   delay_ms(500);
  servo_angle(45);
  delay_ms(500);
   servo_angle(90);
   delay_ms(500);
   servo_angle(135);
    delay_ms(500);
   servo_angle(90);
}
}

回复

使用道具 举报

发表于 2019-4-17 16:38:27 | 显示全部楼层
用万用表测量输出口有电平变化吗?给机器手输入端口3.3V应该不够吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-17 16:44:24 | 显示全部楼层
WishWish 发表于 2019-4-17 16:38
用万用表测量输出口有电平变化吗?给机器手输入端口3.3V应该不够吧

是5V的输入端口,接的是PA8管脚,是程序有问题吗,我main程序只是简单的写了下
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "pwm.h"

int main(void)
{
  u16 pwmval1=0;
        SysTick_Init(168);
        TIM1_CH1_PWM_Init(1999,719);
       
        while(1)
        {
         
          TIM_SetCompare1(TIM1,pwmval1);  
       
       
        }
       
       
}
//
回复 支持 反对

使用道具 举报

发表于 2019-4-17 17:33:32 | 显示全部楼层
子湜 发表于 2019-4-17 16:44
是5V的输入端口,接的是PA8管脚,是程序有问题吗,我main程序只是简单的写了下
#include "system.h"
#i ...

先用示波器或仿真看看有波形对不对吧,只用引脚驱动那个输入我觉得不行
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-27 07:36 , Processed in 0.027895 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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