菜鸟芯片 发表于 2018-11-2 07:09:52

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外设
}

myccl 发表于 2018-11-2 09:12:25

TIM7用的是APB1时钟吧,假如是72M,TIM_Prescaler =72-1,TIM_Period = 100-1;

菜鸟芯片 发表于 2018-11-2 11:05:20

本帖最后由 菜鸟芯片 于 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;)!!

Dandjinh 发表于 2018-11-2 11:44:28

菜鸟芯片 发表于 2018-11-2 11:05
用的是APB2 TIM7用不了APB1

这是STM32F373的block diagram,显示的是挂在APB1上的

wudianjun2001 发表于 2018-11-2 13:33:53

看看时钟树,经过分频的

菜鸟芯片 发表于 2018-11-2 16:02:39

Dandjinh 发表于 2018-11-2 11:44
这是STM32F373的block diagram,显示的是挂在APB1上的

那应该怎么设置?

Dandjinh 发表于 2018-11-2 17:05:53

菜鸟芯片 发表于 2018-11-2 16:02
那应该怎么设置?

(36M)/[(prd+1)*(psc+1)]=1/(0.1m) => period=39, prescale=89

菜鸟芯片 发表于 2018-11-2 18:54:11

Dandjinh 发表于 2018-11-2 17:05
(36M)/[(prd+1)*(psc+1)]=1/(0.1m) => period=39, prescale=89

不行,时间变的更不准了。

myccl 发表于 2018-11-5 09:17:34

菜鸟芯片 发表于 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)



百事and可乐0 发表于 2018-11-8 15:18:29

学习了:D
页: [1]
查看完整版本: STM32F3 72M主时钟 使用通用TIM7定时器 怎么设置才能0.1ms