TIM通用定时器-PWM

 

一、PWM原理

PWM应用:呼吸灯、直流电机、舵机

 

 

 PWM代码:

复制代码
//初始化 timer2的pwm输出参数
//psr:预分频
//arr:自动重装载
//pulse:捕获/比较
void timer2_pwm_init(uint16_t psr,uint16_t arr,uint16_t pulse)
{
    timer_parameter_struct timer_init_struct;
    timer_oc_parameter_struct timer_oc_init_struct;

    //时钟源和io口PB0的初始化
    rcu_periph_clock_enable(RCU_TIMER2);//开启定时器的时钟
    rcu_periph_clock_enable(GPIOB);
    rcu_periph_clock_enable(RCU_AF);//复用

    gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_0);

    //初始化timer2
    timer_deinit(TIMER2);
    timer_init_struct.prescaler = psr;
    timer_init_struct.period = arr; //自动装载值
    timer_init_struct.alignedmode = TIMER_COUNTER_EDGE; //边沿对齐
    timer_init_struct.counterdirection = TIMER_COUNTER_UP;//计数方向

    //PWM的初始化
   timer_oc_init_struct.outputstate = TIMER_CCX_ENABLE;//使能通道
   timer_channel_output_config(TIMER2,TIMER_CH_2,&timer_oc_init_struct););
   
   timer_channel_output_mode_config(TIMER2,TIMER_CH2,TIMER_OC_MODE_PWM);

   //使能timer2
  timer_enable(TIMER2);

} 

//功能:调整PWM的占空比
//duty:捕获/比较
void timer2_pwm_duty_set(uint16_t duty)
{
    timer_channel_output_pulse_value_config(TIMER2,TIME_CH_2,duty);
}
复制代码

 

 

 

 

相关文章:

32.PWM输出原理与配置_pwm配置_YOURUOLI的博客-CSDN博客

(9条消息) 面向应用学习stm32(7)-TIM通用定时器-PWM输出和输入_stm32 pwm输入_这里煤球的博客-CSDN博客

STM32学习(10)-定时器描述,三种计数方式,定时器的工作框图,定时器时钟来源,定时器相关寄存器和函数,通用定时器实现定时的步骤_简述stm32单片机的计数形式_在于探索的博客-CSDN博客

posted @   Аᴅᴏʀᴇ  阅读(50)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示