资讯详情

STM32F103控制360度MG996舵机

该函数应用于输出口(PWM波形输出口定期中断2(TIM2)的ETR通道2(TIM_CH2)

控制MG996R舵机需要调整50个频率Hz,即周期为20ms此时我选择了720分频器的波形,ARR重装器的值为2万

相信大家都会详细计算公式

` TIM_TimeBaseInitStucture.TIM_Period = 2000-1; //ARR自动重装器的值

TIM_TimeBaseInitStucture.TIM_Prescaler = 720-1; //PSC预分频器值

`

void PWM_SetCompare2(uint16_t ComPare) 这个函数是用来改变的CCR值是用来改变的PWM波形脉冲宽度,此时ComPare值的值范围为0-2000,对应0ms——20ms,例如,当调用此函数时,给予110ComPare后,MG996R舵机将顺时针速度运行一点。

void PWM_Init(void) {  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);        ///启用时钟  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    TIM_InternalClockConfig(TIM2);        ///选择内部时钟作为时基频率    GPIO_InitTypeDef GPIO_InitStucture;  GPIO_InitStucture.GPIO_Mode = GPIO_Mode_AF_PP;             ///复用推挽输出(指定)  GPIO_InitStucture.GPIO_Pin = GPIO_Pin_1;                   //PA0口为TIM2_CH2通道输出口  GPIO_InitStucture.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOA,&GPIO_InitStucture);    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStucture;  TIM_TimeBaseInitStucture.TIM_ClockDivision = TIM_CKD_DIV1;           TIM_TimeBaseInitStucture.TIM_CounterMode = TIM_CounterMode_Up;  TIM_TimeBaseInitStucture.TIM_Period = 2000-1;  TIM_TimeBaseInitStucture.TIM_Prescaler = 720-1;  TIM_TimeBaseInitStucture.TIM_RepetitionCounter = 0;  TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStucture);          //时基单元配置    TIM_OCInitTypeDef TIM_OCInitStucture;                         TIM_OCInitStucture.TIM_Pulse = 0;                         //CCR的值        TIM_OCInitStucture.TIM_OCMode = TIM_OCMode_PWM1;          ///输出比较模式  TIM_OCInitStucture.TIM_OCNPolarity = TIM_OCPolarity_High; ///极性设置  TIM_OCInitStucture.TIM_OutputState = ENABLE;  TIM_OC2Init(TIM2,&TIM_OCInitStucture);                    //比较单元配置    TIM_Cmd(TIM2,ENABLE); }  void PWM_SetCompare2(uint16_t ComPare)                       //改变通道2CCR的值 {  TIM_SetCompare2(TIM2,ComPare); }

标签: mg643183连接器mg642570连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台