小编Ehs*_*bib的帖子

STM32F4计时器-计算周期和预分频,并产生1 ms延迟

我使用STM32F407VGT6CubeMX
因此,我从通用计时器开始,但始终陷于预分频和周期值。

基本上我想每隔n(其中n = 1,2,3 ..)ms 生成一个计时器中断并执行一些任务。
公式中有很多变化,可以计算周期和预分摊的值

公式的某些版本是:

TIMupdateFreq(HZ)=时钟/(((PSC-1)*(Period-1))
更新事件= TIM clk /(((PSC + 1)*(ARR + 1)*(RCR + 1))
预分频器=((( (时钟速度)/((周期)/(1 /频率)))+ 0.5)-1)

因此,我的核心时钟运行在,168 MHz但我可以看到定时器连接到APB1 Bus,它正在运行84 MHz

我尝试了一个代码,该代码会产生1 ms的延迟(作者说),在使用该值进行预分频和周期后,我生成了一个代码,该代码也会产生1ms的延迟(直觉-无作用域)。

该代码使用的预分度值为41999,期限为1999。

因此,
PSC-41999
ARR-1999将
其应用于第二个公式

Update Event = TIM clk/((PSC+1)*(ARR+1)*(RCR+1))

Update Event = 84000000/(42000*2000) = 1 (这是1毫秒的延迟吗?)

行,所以我现在想了解如何PSC = 41999Period = 1999选择?它是否纯粹基于假设,如我使用的任何公式中我都必须假设一个变量。如果我想说1.5或2.3或4.9之类的精确计时,如何计算预分频和周期?

编辑

而且,当我使用PSC=41999 and Period =999更新事件值为2时。

Update Event = 84000000/(42000*1000) = …

microcontroller timer stm32 stm32f4 cubemx

3
推荐指数
3
解决办法
9009
查看次数

标签 统计

cubemx ×1

microcontroller ×1

stm32 ×1

stm32f4 ×1

timer ×1