STM32F3 72M主时钟 使用通用TIM7定时器 怎么设置才能0.1ms
{TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = ???;//TIM7_COUTER; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler = ???;//TIM7_PRESCALER; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE); //使能或者失能指定的TIM中断
TIM_Cmd(TIM7, ENABLE); //使能TIMx外设
}
TIM7用的是APB1时钟吧,假如是72M,TIM_Prescaler =72-1,TIM_Period = 100-1; 本帖最后由 菜鸟芯片 于 2018-11-2 16:14 编辑
myccl 发表于 2018-11-2 09:12
TIM7用的是APB1时钟吧,假如是72M,TIM_Prescaler =72-1,TIM_Period = 100-1;
TIM7 不是经过了分频吗? 是不是这样?TIM_Prescaler =36-1,TIM_Period = 100-1;)!!
菜鸟芯片 发表于 2018-11-2 11:05
用的是APB2 TIM7用不了APB1
这是STM32F373的block diagram,显示的是挂在APB1上的
看看时钟树,经过分频的 Dandjinh 发表于 2018-11-2 11:44
这是STM32F373的block diagram,显示的是挂在APB1上的
那应该怎么设置? 菜鸟芯片 发表于 2018-11-2 16:02
那应该怎么设置?
(36M)/[(prd+1)*(psc+1)]=1/(0.1m) => period=39, prescale=89 Dandjinh 发表于 2018-11-2 17:05
(36M)/[(prd+1)*(psc+1)]=1/(0.1m) => period=39, prescale=89
不行,时间变的更不准了。 菜鸟芯片 发表于 2018-11-2 18:54
不行,时间变的更不准了。
他这个应该没错啊,其实可以有多组计数值和分频值都是正确的。
主时钟CLOCK Hz
定时时间TIME sec
x = Prescaler + 1 x∈N+
y = Period + 1 y∈N+
CLOCK/(x*y) = 1/(TIME)
y = CLOCK*TIME*(1/x)
学习了:D
页:
[1]