[STM32F0] 关于定时器TIM1的分频疑问,请高手帮帮忙,多谢

[复制链接]
1222|8
 楼主| wxqfhy 发表于 2019-5-26 08:14 | 显示全部楼层 |阅读模式
用TIM1 的TIM_TRGOSource_Update触发ADC,发现我需要的
TIM_TimeBaseStructure.TIM_Prescaler = 48-1;      
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;   
设置不能实现,只有 TIM_TimeBaseStructure.TIM_Period = 50000-1;起作用
void TIM1_Config(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_OCInitTypeDef        TIM_OCInitStructure;
  
  TIM_DeInit(TIM1);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_OCStructInit(&TIM_OCInitStructure);  
  //Time base configuration
  TIM_TimeBaseStructure.TIM_Period = 50000-1;
  TIM_TimeBaseStructure.TIM_Prescaler = 48-1;      
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  
  TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);
  TIM_Cmd(TIM1, DISABLE);
}
小鱼丸 发表于 2019-5-26 20:16 | 显示全部楼层
f CK_CNT = f CK_PSC / (PSCR[15:0] + 1)
943345cea837a587c3.png
小鱼丸 发表于 2019-5-26 20:22 | 显示全部楼层
TIM_Cmd(TIM1, DISABLE);
hanzhen654 发表于 2019-5-26 21:25 | 显示全部楼层
按照标准的模式来  分频和周期  以此来确定一个需要的定时时间
 楼主| wxqfhy 发表于 2019-5-27 08:29 | 显示全部楼层
小鱼丸 发表于 2019-5-26 20:16
f CK_CNT = f CK_PSC / (PSCR[15:0] + 1)

朋友,给详细说一下。谢谢
 楼主| wxqfhy 发表于 2019-5-27 08:32 | 显示全部楼层
hanzhen654 发表于 2019-5-26 21:25
按照标准的模式来  分频和周期  以此来确定一个需要的定时时间

请详细解释一下,谢谢
buffered 发表于 2019-5-27 16:55 | 显示全部楼层
手册里应该说的非常清楚了,理解手册内容就可以了
香水城 发表于 2019-5-28 22:52 | 显示全部楼层
本帖最后由 香水城 于 2019-5-28 22:54 编辑

你现在是TIMER的更新事件作为ADC转换使能信号,

这个更新事件的频率跟 TIM_Prescaler TIM_Prescaler 以及时钟源频率 三个东西有关,
跟那个TIM_ClockDivision没有关系,具体细节自己回头看看手册就好了。

【准确地说,如果是高级定时器TIM1/TIM8,还跟那个重复计数寄存器配置有关。】
guanjiaer 发表于 2019-6-17 12:52 | 显示全部楼层
这个需要对寄存器详细了解啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部