stm32定时器频率如何配置为2000hz/1000hz/150hz

    TIM_TimeBaseStructure.TIM_Period = 500-1 ; //设置500us一次TIM2比较的周期
    TIM_TimeBaseStructure.TIM_Prescaler = 48 - 1;//48Mhz / 48 = 1Mhz = 1us
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit( TIM2, & TIM_TimeBaseStructure );

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//下面详细说明
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//TIM_OutputState_Disable;
    TIM_OCInitStructure.TIM_Pulse = 250;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//如果是PWM1要为Low,PWM2则为High
    TIM_OC2Init( TIM2, & TIM_OCInitStructure );

   上面的程序实现了在系统时钟为48Mhz、周期为500、分频因子为48、且时钟1分频(就是不分频)时,定时器的频率为2000hz(时钟啥的自己配置)  Period的范围为0~65535,Prescaler的范围为0~65535

   f = (system clock/prescaler)/Period

     =(48000000/48)/500

     = 2000hz

   如果想配置为1000hz,假设此时时钟依然为48Mhz

    TIM_TimeBaseStructure.TIM_Period = 1000-1 ;
    TIM_TimeBaseStructure.TIM_Prescaler = 48 - 1;

   f = (system clock/prescaler)/Period

     =(48000000/48)/1000

     = 1000hz

扫描二维码关注公众号,回复: 5096334 查看本文章

   如果想配置为150hz,假设此时时钟依然为48Mhz

    TIM_TimeBaseStructure.TIM_Period = 2000-1 
    TIM_TimeBaseStructure.TIM_Prescaler = 16 - 1

   f = (system clock/prescaler)/Period

     =(48000000/16)/2000

     = 150hz

猜你喜欢

转载自blog.csdn.net/qq_36787524/article/details/85338688
hz