Tout = ((Counter Period+1)*(Prescaler +1)) / Tclk ; 其中: Tclk:定时器的输入时钟频率,如108MHz==108000000. u+ e4 Y+ O5 R: l0 `$ q4 O# w: I Tout:定时器溢出时间,如1s! A1 I" ~3 g2 d; j" r0 e ' A. T% C1 D1 L- B0 q: a% Y 则Counter Period可以为10000 - 1,Prescaler可以为10800 - 1 ) \7 J- [9 L# l 则最终TIM3的定时器频率为10000Hz,一个脉冲的时间为1/10000s,则若要定时1s,则自动重载寄存器设置为10000-1(如要定时0.2s,则自动重装寄存器设置为0.2/(1/10000)-1.即2000-1)。 利用CubeMX配置时首先确认TIM3是挂载在哪条总线上,查找STM32F7的参考手册,可以看到是挂载到APB1上& s* p/ R0 @9 x! l, f 0 r5 k r+ o' R! H) e% g - z7 Z4 C$ b: I' M7 q/ X2 I) f 在Pinout选项卡中,选择TIM3,Clock Source选择Internal Clock / P2 o* N# J0 Q# Q2 v) W; p " n. z5 \! z6 a# Z/ w, o8 P- [ 切换到Clock Configuration选项卡,PLL Source Mux中选择HSI,System Clock Mux中选择PLLCLK,此时HCLK显示最大为216MHz,输入216后,其他的系数会自动分配7 k8 g* I' k' Z, y& ]5 a0 s " T; r/ s! i# [; \. j 切换到Configuration选项卡,在Control中会出现TIM3,点击TIM3后,在Parameter Settings选项卡中填入Prescaler和Counter Period,比如108MHz为定时器TIM3输入时钟频率,若定时时间为1s,则Counter Period可以设置为10000-1,而Prescaler可以设置为10800-1。 % ?2 ?. V% T0 T; l( ? 然后不要忘记使能定时器中断,可以在TIM3的NVIC Settings选项卡中使能,也可以在NVIC中使能/ }( S( x# E( P& V$ @3 u 0 ~. |8 b; g" X% k4 d: v+ d : `' Q2 x: C! `5 _# {% h ! w w! W6 c0 Z% i9 G5 E 7 F* J7 g# \6 N# d3 j2 Z2 P 7 W4 `9 r! k$ X0 E# h; J& w* W0 } |
基于STM32F746G-Discover的扩展电路板
【合集】STM32F7教程、资料大集合
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断