主频72MHz:最大计时59.65s
基本定时器: # [% |3 n* Y5 T+ _ 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应 主模式触发DAC 硬件自动化 / {! s$ c$ \: @* X5 y0 [4 j+ ` 通用定时器:) x+ T! f1 T- d. ^) r# v + } l% M% _& A& F5 W2 ~' n* E
- J4 \. {" ^9 | 计数模式不只一种:; e, [; P: z' n 向上计数:计数器累加到自动重装载模式的值后进行中断相应 向下计数:自动重装载模式中的值向下减到0后进入中断 中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生 r/ ?* x5 D: Z4 K( c
5 t+ x6 K9 o7 A7 O# E0 \% Q7 o 定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO 选择外部时钟1 - p! J+ ?' _! X* h/ b0 f8 L ! F& c% m+ F. m' o) f: l 定时器的使用: ETR引脚,CH1、2、3、4 边沿 其他定时器& e7 i. J5 |$ d* i 6 q8 g0 D7 e; S& A, K 输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率
; w: C( k+ b( a N! \- R% ~7 s: W 初始化定时器7 M( T$ V+ P6 r3 ~ Q+ t 开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组 ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器 定时器中断函数:判断标志位,清除标志位 ) V0 R$ c3 k, N4 B NVIC结构体:中断通道,使能 抢占优先,相应优先级 $ g) t5 K8 v- g" E 时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0 , _+ e, H/ ]. g 预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0 以定时一秒为例: 预分频: 7200-1 时钟周期: 10000 定时的长度=72000000/ 预分频 / 时钟周期 2 l, O1 D# s: |3 b 找到TIM的定时器库函数:- Q: ]5 h) v1 C- n7 H& N y- f % @0 u* }* }; i2 W
( t/ Z; z% o6 j, m/ i, Q& C" a 第一个:清空配置 第二个:时机单元初始化+ U, ^: c6 p9 [1 h* ^ Timebasestruct 附一个默认值8 K+ ~, z1 `0 Z! P: x+ d0 g TIM_cmd 使能定时器, Z; o. v/ K1 t0 Q- L& N4 B# |! i
TIM——ITconfig 使能中断/ y$ P0 L6 w& Z) g! {. r+ R
/ E! R6 U' M( e1 l 选择时钟 & q0 f. \; ^3 D3 j, y0 K) ~7 _ 具体步骤:
! W1 U/ V3 S* l) K1 G 这里的分频和自动重装值需要理解一下9 V. u ~3 r1 n 2 o0 P# X: |7 l" ?
72M/分频/计数个数:) t8 M/ m' u$ H2 F5 D 1 F- B% N7 A) i# O 72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s2 [5 V1 ], q0 h& F
打开定时器时清除中断的标志位
判断中断标志位然后进行相关的操作# f9 z+ [7 K5 o" L; s7 D 外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断 / a. }/ l; |) d% ~( G8 n5 G6 m 使用的外部时钟,需要用到GPIO; q3 u1 O" a; T$ d7 K% h/ j7 r- l 配置外部时钟; 配置外部触发的时钟/ e( V# N4 r( B% r @4 M* J/ J ! s+ [! P1 I2 {7 {. ? u2 Z" Q
7 J5 Z _0 e8 J8 g% Y$ c* T. y 复用的是PA-0口 V" E, Z6 e" N
外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断, t7 q6 a1 F! V0 d- E+ G ! V) v6 k$ t3 l \ 预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+14 `3 l: w& C/ K/ I8 v2 v; ~ 定时器中断代码总结: 7 N9 M) I+ b0 N/ U1 X% Y 打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体,( r" g. [+ ]6 T' w' m5 B) T* n; w 6 C% v) N8 P$ U% a$ h 打开中断定时通道进入NVIC 配置NVIC中断优先级,打开计数器/ N! Z8 c0 @4 n* t. X0 L; y 4 l9 ~& Q8 H# l/ u8 q' w6 { 外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发 ( N! T: p' o$ Z 不用预分频 就直接用周期来进行判断进入中断 ———————————————— 版权声明:小聪不想秃头' F( Q' ^9 X& \2 W. `; B' C 如有侵权请联系删除; K2 Y4 n- J0 i7 o 2 ~# y5 h8 o$ m T( C' _) P4 b& j |
经验分享 | 利用TIMER定时和捕获功能实现编解码演示
STM32 LSE 不起振排查指南:五大核心原因与快速解决方案
我心中的ST中文论坛
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
2025软件工具兔哥知道
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
经验分享 | 一个基于TIMER事件的中断响应话题_续
经验分享 | 一个基于TIMER事件的中断响应话题
11张图学会STM32定时器!
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
微信公众号
手机版