STM32F103RCt6 与 MG996R

 

 

 

 

发一张我自己的舵机

 

 

 

老习惯,直接放代码,然后说说遇到的问#include"PWM.h"

#include"stm32f10x.h"
#include"sys.h"


void PWM_Init(u16 arr,u16 psc)
{
    
    GPIO_InitTypeDef GPIO_InitStruct;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    TIM_OCInitTypeDef TIM_OCInitStruct;
    
    
//使能A组和TIM1的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    
//c初始化IO口为复用推挽输出
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStruct);

    
//初始化定时器
    TIM_TimeBaseInitStruct.TIM_ClockDivision=0;
    TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; ;
    TIM_TimeBaseInitStruct.TIM_Period=arr;
    TIM_TimeBaseInitStruct.TIM_Prescaler=psc;
    TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);
    
    
    //初始化外设TIM1 
    TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
    TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
    TIM_OCInitStruct.TIM_Pulse=0;
    TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
    TIM_OC1Init(TIM1,&TIM_OCInitStruct);
    
    //主输出使能
    TIM_CtrlPWMOutputs(TIM1,ENABLE);
    
    //CH1预装载使能
    TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
    
    //使能TIM在ARR上的预装载寄存器
    TIM_ARRPreloadConfig(TIM1,ENABLE);
    
    //使能TIM1
    TIM_Cmd(TIM1,ENABLE);
    
}



int main()
{
    u16 LPV=0;
    u8 K=1;
    delay_init();
    LED_Init();
    PWM_Init(199,7199);
    
    while(1)
    {
        TIM_SetCompare1(TIM1,175);
            delay_ms(5);
        TIM_SetCompare1(TIM1,175);
        delay_ms(2000);
        TIM_SetCompare1(TIM1,185);
        delay_ms(5);
        TIM_SetCompare1(TIM1,190);
        delay_ms(3000);
        TIM_SetCompare1(TIM1,195);
        delay_ms(5);
        delay_ms(3000);
        TIM_SetCompare1(TIM1,190);
        delay_ms(5);
        TIM_SetCompare1(TIM1,185);
        delay_ms(5);
        delay_ms(1000);
        delay_ms(1000);
        delay_ms(1000);
            TIM_SetCompare1(TIM1,170);
            delay_ms(5);
    }
return 0;    
}

第一个问题:PWM有PWM1和PWM2的区别,你还记得么,
第二个问题:写好程序舵机抖动抖动,有两个原因,电源不稳定,或者是转动的角度过大,
第三个问题:接线和电源的电压问题,

posted @ 2020-04-19 22:07  Loving-Q  阅读(899)  评论(0编辑  收藏  举报