你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2651|回复: 2

STM8S定时器的预分频器问题

[复制链接]

1

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-4-11 20:48:09 | 显示全部楼层 |阅读模式
 PSCR contains the value which is loaded in the active prescaler register at each  UEV (including when the counter is cleared through the UG bit of the TIM1_EGR  register or through the trigger controller when configured in trigger reset  mode).
A UEV must be generated so that a new prescaler value can be taken  into  account.

这是摘自手册中的一段话,就是说写入的预分频值要想生效,就必须产生一个更新事件,但是我看了固件库中的有些例子,在定时器初始化时,写入了预分频值,但是就没有置位UG产生更新事件使写入的预分频值生效,这怎么解释啊?下面是两个定时器初始化的例子,一个置位UG,另一个没有:

static  void TIM2_Config(void)
{  /* Time base configuration */        
TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);  
/* Prescaler  configuration,这里就是置位UG,使得写入的预分频值生效*/  
TIM2_PrescalerConfig(TIM2_PRESCALER_2048,  TIM2_PSCRELOADMODE_IMMEDIATE);
  
/* Output Compare  Active 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 Mode  configuration: Channel2 */  
  /*TIM2_Pulse = CCR2_Val  */    
TIM2_OC2Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val,  TIM2_OCPOLARITY_HIGH);   TIM2_OC2PreloadConfig(DISABLE);
* /* Output Compare  Active 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 void  TIM2_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 Mode  configuration: Channel2 */  
TIM2_OC2Init(TIM2_OCMODE_PWM1,  TIM2_OUTPUTSTATE_ENABLE,CCR2_Val,  TIM2_OCPOLARITY_HIGH);  TIM2_OC2PreloadConfig(ENABLE);
* /* PWM1 Mode  configuration: 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);
}
<
回复

使用道具 举报

2

主题

295

回帖

0

蝴蝶豆

初级会员

最后登录
2018-4-6
发表于 2014-4-14 10:34:15 | 显示全部楼层

RE:STM8S定时器的预分频器问题

应该是第一个是立即更新预分频值,第二个是下一个更新事件时更新预分频值, 结果没有多大的出入
回复 支持 反对

使用道具 举报

22

主题

456

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-7-20
发表于 2014-4-20 10:45:04 | 显示全部楼层

RE:STM8S定时器的预分频器问题

第二个语句中有这个
TIM2_ARRPreloadConfig(ENABLE);   
下次更新事件发生时,分频值生效,使能预加载了,第一个是立即生效的
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版