[其他ST产品] STM 32 定时器输出 PWM

[复制链接]
449|15
 楼主| 键盘手没手 发表于 2023-10-28 14:42 | 显示全部楼层 |阅读模式

我们通过TIM3 输出PWM 去驱动 SG90电机
配置如下
1.GPIO结构体
2.配置通用定时器结构体
3.配置定时去输出PWM结构体
4.打开时钟 —> GPIO时钟,TIM定时器时钟,部分重映射时钟
5.配置PWM比较值

一 我们使用定时器3 通道2 重映射之后为PB5


  1.                        
  2.                 GPIO_InitTypeDef  GPIO_motorstruct;               
  3.                 GPIO_motorstruct.GPIO_Mode  =GPIO_Mode_AF_PP;
  4.                 GPIO_motorstruct.GPIO_Pin                = GPIO_Pin_5;
  5.                 GPIO_motorstruct.GPIO_Speed  =GPIO_Speed_50MHz;
  6.                 GPIO_Init( GPIOB, &GPIO_motorstruct);



 楼主| 键盘手没手 发表于 2023-10-28 14:42 | 显示全部楼层
  1.        
  2.         TIM_TimeBaseInitTypeDef   TIM_motostruct ;
  3.         TIM_motostruct.TIM_ClockDivision  =  TIM_CKD_DIV1;
  4.         TIM_motostruct.TIM_CounterMode  =TIM_CounterMode_Up   
  5.          TIM_motostruct.TIM_Period =  200-1;                       
  6.         TIM_motostruct.TIM_Prescaler  =  7200-1;
  7.         TIM_TimeBaseInit( TIM3, &TIM_motostruct);
  8.        
 楼主| 键盘手没手 发表于 2023-10-28 14:43 | 显示全部楼层

  1.         TIM_OCInitTypeDef   PWM_Motorstruct;
  2.         PWM_Motorstruct.TIM_OCMode  =  TIM_OCMode_PWM1;
  3.         PWM_Motorstruct.TIM_OutputState  = TIM_OutputState_Enable;
  4.         PWM_Motorstruct.TIM_OCPolarity   =TIM_OCPolarity_Low;
  5.        
  6.         TIM_OC2Init( TIM3, &PWM_Motorstruct);
  7.         IM_OC2PreloadConfig( TIM3, TIM_OCPreload_Enable);
  8.         TIM_Cmd( TIM3,  ENABLE);
 楼主| 键盘手没手 发表于 2023-10-28 14:43 | 显示全部楼层

        TIM_OCInitTypeDef   PWM_Motorstruct;
        PWM_Motorstruct.TIM_OCMode  =  TIM_OCMode_PWM1;
        PWM_Motorstruct.TIM_OutputState  = TIM_OutputState_Enable;
        PWM_Motorstruct.TIM_OCPolarity   =TIM_OCPolarity_Low;
       
        TIM_OC2Init( TIM3, &PWM_Motorstruct);
        IM_OC2PreloadConfig( TIM3, TIM_OCPreload_Enable);
        TIM_Cmd( TIM3,  ENABLE);
 楼主| 键盘手没手 发表于 2023-10-28 14:43 | 显示全部楼层
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,  ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,  ENABL);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,  ENABLE);
GPIO_PinRemapConfig( GPIO_PartialRemap_TIM3,ENABLE );
 楼主| 键盘手没手 发表于 2023-10-28 14:43 | 显示全部楼层
                uint16_t pwmval=155;
                motor_config();
                while(1)
                {
                        for(pwmval=195;pwmval>=175;pwmval-=5)
                        {
                                                TIM_SetCompare2( TIM3,pwmval);
                                                delay(500);
                        }
               
        }
}
 楼主| 键盘手没手 发表于 2023-10-28 14:43 | 显示全部楼层
最后 SG90 就会按照我们设定的那样去转啦

Wordsworth 发表于 2024-2-1 08:29 | 显示全部楼层

最典型的应用就是放大电路中的高低音频控制
Clyde011 发表于 2024-2-1 09:32 | 显示全部楼层

器件整合的再紧凑都无法发挥最大的效率
公羊子丹 发表于 2024-2-1 10:25 | 显示全部楼层

需要设置电压钳位电路予以保护D3、N3构成的回路
万图 发表于 2024-2-1 11:28 | 显示全部楼层

需要串联一个限流电阻在其中
Uriah 发表于 2024-2-1 12:31 | 显示全部楼层

当人接触任何东西时,体内的电荷就会放电。
帛灿灿 发表于 2024-2-1 14:27 | 显示全部楼层

有不普通的门道
Bblythe 发表于 2024-2-1 15:30 | 显示全部楼层

只能处理较小的能量
周半梅 发表于 2024-2-1 17:26 | 显示全部楼层

电路正常工作
Pulitzer 发表于 2024-2-1 18:29 | 显示全部楼层

灌封前基材外观保持清洁和干燥。将混合好的胶料灌注于需灌封的器件内
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

1260

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部