STM32F103RCt6 与 MG996R

![]()

![]()

发一张我自己的舵机

![]()

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

<em id="__mceDel">#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;    <br></br>
}<br></br><br></br>第一个问题:PWM有PWM1和PWM2的区别,你还记得么,<br></br>第二个问题:写好程序舵机抖动抖动,有两个原因,电源不稳定,或者是转动的角度过大,<br></br>第三个问题:接线和电源的电压问题,<br></br><br></br></em>

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。