stm32 timer 的三个函数

来源:互联网 发布:mac下好用的命令行终端 编辑:程序博客网 时间:2024/06/05 10:37

        先说TIM_ARRPreloadConfig设置为DISABLE 和ENABLE的问题,他的作用只是允许或禁止在定时器工作时向ARR的缓冲器中写入新值,以便在更新事件发生时载入覆盖以前的值。在开始初始化的时候你已经把" TIM_TimeBaseStructure.TIM_Period=2000;   //ARR的值  ",后来也一直是这个值,原因是你没有编写中断服务函数或者你在中断服务函数中根本就没有给ARR缓冲器重新写入新值,所以设置为DISABLE 和ENABLE都没有影响,那么如果后来也一直是这个值,不写入新值的话,这句话是不是就可以不用写了,我觉得可以不用写。

  再说一下TIM_TimeBaseStructure.TIM_Prescaler=0的问题,这个很简单,程序后面如果调用了函数TIM_PrescalerConfig(TIM2,35999,TIM_PSCReloadMode_Immediate);这个函数可以把之前的值给修改了,TIM_PrescalerConfig函数的作用就是在定时器工作时改变预分频器的值,那么如果后来一直是初始化的值,不写入新值的话,这个函数也可以不用写了。



   TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的预装载寄存器,即TIM3_CCR2的预装载值在更新事件到来时才能被传送至当前寄存器中。
  这句话是说,CCR2中的预装载值何时被传送到当前的CNT寄存器中,这里我们选择的是当更新事件到来的时候才装载,追踪寄存器的设置可知,原来设置的是CCMR1的OC2PE,其实还有一种方式是立即装载看手册:P248-249
OC1PE:输出比较1预装载使能(Output compare 1 preload enable) 位3 
0:禁止TIMx_CCR1寄存器的预装载功能,可随时写入TIMx_CCR1寄存器,并且新写入的数值立即起作用。
1:开启TIMx_CCR1寄存器的预装载功能,读写操作仅对预装载寄存器操作,TIMx_CCR1的预装载值在更新事件到来时被传送至当前寄存器中。



Timer4 时钟72M  APB1时钟36M  

原创粉丝点击