亚博智能论坛  
  
查看: 547|回复: 0

STM32F103VCT6的定时器3输出PWM控制几个舵机,超出一个不受控制

  [复制链接]
  • TA的每日心情
    郁闷
    2017-7-26 09:41
  • 15

    主题

    30

    帖子

    84

    积分

    菜鸟程序猿

    Rank: 2

    积分
    84
    发表于 2017-6-21 14:18:08 | 显示全部楼层 |阅读模式
    1. void TIM3_PWM4_Init3(u16 state)//一号舵机
    2. {  
    3.         static u16 i=200;
    4.         GPIO_InitTypeDef GPIO_InitStructure;
    5.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    6.         TIM_OCInitTypeDef  TIM_OCInitStructure;
    7.         
    8.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);
    10.         
    11.         GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

    12.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM_CH3
    13.         {GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; }
    14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    15.         GPIO_Init(GPIOB, &GPIO_InitStructure);

    16.         TIM_TimeBaseStructure.TIM_Period = 1999;
    17.         TIM_TimeBaseStructure.TIM_Prescaler = 719;
    18.         TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    19.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    20.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

    21.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    22.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    23.         TIM_OCInitStructure.TIM_Pulse = 18;
    24.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    25.         TIM_OC4Init(TIM3, &TIM_OCInitStructure);
    26.         TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
    27.         TIM_Cmd(TIM3, ENABLE);

    28.         if(state == 1)
    29.         {
    30.                 for(;i>140;i--)
    31.                 {
    32.                         TIM_SetCompare4(TIM3,i);
    33.                         delay_ms(20);
    34.                 }
    35.         }
    36.         else
    37.         {
    38.                 for(;i<200;i++)
    39.                 {
    40.                         TIM_SetCompare4(TIM3,i);
    41.                         delay_ms(20);
    42.                 }
    43.         }
    44. }


    45. void TIM3_PWM3_Init2(u16 state)//二号舵机
    46. {  
    47.         static u16 i=160;
    48.         GPIO_InitTypeDef GPIO_InitStructure;
    49.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    50.         TIM_OCInitTypeDef  TIM_OCInitStructure;
    51.         
    52.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    53.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);
    54.         
    55.         GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

    56.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    57.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    58.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    59.         GPIO_Init(GPIOB, &GPIO_InitStructure);

    60.         TIM_TimeBaseStructure.TIM_Period = 1999;
    61.         TIM_TimeBaseStructure.TIM_Prescaler = 719;
    62.         TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    63.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    64.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

    65.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    66.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    67.         TIM_OCInitStructure.TIM_Pulse = 180;
    68.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    69.         TIM_OC3Init(TIM3, &TIM_OCInitStructure);
    70.         TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
    71.         TIM_Cmd(TIM3, ENABLE);
    72.         if(state == 1)
    73.         {
    74.                 for(;i>130;i--)
    75.                 {
    76.                         TIM_SetCompare3(TIM3,i);
    77.                         delay_ms(30);
    78.                 }
    79.                
    80.         }
    81.         else
    82.         {
    83.                 for(;i<190;i++)
    84.                 {
    85.                         TIM_SetCompare3(TIM3,i);
    86.                         delay_ms(30);
    87.                 }
    88.         }  
    89. }


    90. int main(void)
    91. {        
    92. RCC_Configuration();
    93. delay_init();                     
    94. uart_init(115200);

    95. TIM3_PWM3_Init2(1);//二号舵机
    96.         delay_ms(1000);
    97. TIM3_PWM4_Init3(1);//一号舵机

    98. while(1);

    99. }
    复制代码


    回复

    使用道具 举报

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

    本版积分规则

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