STM8S定时器的预分频器问题
PSCR contains the value which is loaded in the active prescaler register at eachUEV (including when the counter is cleared through the UG bit of the TIM1_EGRregister or through the trigger controller when configured in trigger resetmode).A UEV must be generated so that a new prescaler value can be takenintoaccount.
这是摘自手册中的一段话,就是说写入的预分频值要想生效,就必须产生一个更新事件,但是我看了固件库中的有些例子,在定时器初始化时,写入了预分频值,但是就没有置位UG产生更新事件使写入的预分频值生效,这怎么解释啊?下面是两个定时器初始化的例子,一个置位UG,另一个没有:
staticvoid TIM2_Config(void)
{ /* Time base configuration */
TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);
/* Prescalerconfiguration,这里就是置位UG,使得写入的预分频值生效*/
TIM2_PrescalerConfig(TIM2_PRESCALER_2048,TIM2_PSCRELOADMODE_IMMEDIATE);
/* Output CompareActive Mode configuration: Channel1 */
/* TIM2_OCMode =TIM2_OCMODE_ACTIVE TIM2_OutputState = TIM2_OUTPUTSTATE_ENABLE TIM2_Pulse =CCR1_Val TIM2_OCPolarity =TIM2_OCPOLARITY_HIGH */
TIM2_OC1Init(TIM2_OCMODE_ACTIVE,TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH); TIM2_OC1PreloadConfig(DISABLE);
/* Output Compare Active Modeconfiguration: Channel2 */
/*TIM2_Pulse = CCR2_Val */
TIM2_OC2Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val,TIM2_OCPOLARITY_HIGH); TIM2_OC2PreloadConfig(DISABLE);
* /* Output CompareActive Mode configuration: Channel3 */
/* TIM2_Pulse =CCR3_Val */
TIM2_OC3Init(TIM2_OCMODE_ACTIVE,TIM2_OUTPUTSTATE_ENABLE,CCR3_Val,TIM2_OCPOLARITY_HIGH); TIM2_OC3PreloadConfig(DISABLE); TIM2_ARRPreloadConfig(ENABLE);
/*TIM2 enable counter */
TIM2_Cmd(ENABLE);
}
static voidTIM2_Config(void)
{ /* Time base configuration 这里就没有置位UG,使得写入的预分频值生效*/
TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999);
* /* PWM1 Mode configuration:Channel1 */
TIM2_OC1Init(TIM2_OCMODE_PWM1,TIM2_OUTPUTSTATE_ENABLE,CCR1_Val,TIM2_OCPOLARITY_HIGH); TIM2_OC1PreloadConfig(ENABLE);
/* PWM1 Modeconfiguration: Channel2 */
TIM2_OC2Init(TIM2_OCMODE_PWM1,TIM2_OUTPUTSTATE_ENABLE,CCR2_Val,TIM2_OCPOLARITY_HIGH); TIM2_OC2PreloadConfig(ENABLE);
* /* PWM1 Modeconfiguration: Channel3 */
TIM2_OC3Init(TIM2_OCMODE_PWM1,TIM2_OUTPUTSTATE_ENABLE,CCR3_Val,TIM2_OCPOLARITY_HIGH); TIM2_OC3PreloadConfig(ENABLE);
*TIM2_ARRPreloadConfig(ENABLE);
/* TIM2 enable counter*/
TIM2_Cmd(ENABLE);
}
RE:STM8S定时器的预分频器问题
应该是第一个是立即更新预分频值,第二个是下一个更新事件时更新预分频值, 结果没有多大的出入RE:STM8S定时器的预分频器问题
第二个语句中有这个TIM2_ARRPreloadConfig(ENABLE);
下次更新事件发生时,分频值生效,使能预加载了,第一个是立即生效的
页:
[1]