主频72MHz:最大计时59.65s
基本定时器:8 j* j' c' r( I9 ]* r ?; ?# K* D$ f / I4 a' D: y9 b/ J* u. k$ ?9 p 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应6 U- ? z/ `+ t 8 B9 [7 l) i! t& z8 F0 n 主模式触发DAC 硬件自动化# [/ _3 ^1 j$ } t! }4 w : o( a' d# _. K ~ 通用定时器:2 X& X, a5 ?8 M( R' A: @' s" Z2 O8 T
0 l8 U* e! ]/ y% @; u4 r 计数模式不只一种:8 w, y9 T" u7 M9 e; o7 n7 R5 k 向上计数:计数器累加到自动重装载模式的值后进行中断相应 向下计数:自动重装载模式中的值向下减到0后进入中断 中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生6 q% Z1 e7 @; a- A8 e ! [$ @/ V p4 k# F# B0 N
定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO 选择外部时钟1 ( c* s, J R: c- F 7 C$ V& J, h$ d; |1 f1 Q+ { F2 E 定时器的使用: ETR引脚,CH1、2、3、4 边沿 其他定时器 输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率: C+ {9 ~- r- u1 B0 j! G , C( l2 d% R0 R2 m8 n
初始化定时器 开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组 ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器 定时器中断函数:判断标志位,清除标志位& |: j; Y# @' Z9 l. \9 r# L$ e " \6 u9 g+ U: O7 S3 u; P. ?( ^* ` NVIC结构体:中断通道,使能 抢占优先,相应优先级0 l7 G7 Z7 z; H* X1 G5 f 时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0/ X" V1 y; y( V/ L. m 预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0 以定时一秒为例: 预分频: 7200-1 时钟周期: 10000 定时的长度=72000000/ 预分频 / 时钟周期 % H7 s/ W% c% K6 z$ E, t 找到TIM的定时器库函数:/ Y) `; ^- x2 ?% Y2 K7 U
第一个:清空配置% U1 F" y. X) r5 a 第二个:时机单元初始化9 d) G0 e+ ^1 [% _ m. z: @ Timebasestruct 附一个默认值" W* ?# |9 N" H8 D) [ TIM_cmd 使能定时器 : ?* _1 H0 z3 C
# L9 Z3 h" ]2 _, W. W7 ]2 @) t$ T TIM——ITconfig 使能中断* S0 y7 w" _9 J1 W( F% @: |
选择时钟 具体步骤:0 _, x, Y2 n8 b9 @ + H) m% ]7 [5 v3 I9 v
* }4 W; o. \/ c$ C 这里的分频和自动重装值需要理解一下( T& ?$ m* r) I# d! H( t0 Z
5 ?& I% V. X% w1 e% V 72M/分频/计数个数: 5 O: v" J% ?$ B s. _+ M) v# K 72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s8 |: M' J- y" j 2 g, c, `. D" [: \: L* m* }
打开定时器时清除中断的标志位 5 |/ g9 d. ]; m
( f9 W0 Y7 q; k: c, E& x/ I, g 判断中断标志位然后进行相关的操作 @2 k& n9 z$ P3 N# a ) X! S& N; Q- u 外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断 8 Z9 i/ W) b/ A6 I( e 使用的外部时钟,需要用到GPIO 4 M4 I) \9 [8 a+ p: M 配置外部时钟; 配置外部触发的时钟 % U$ Z' u9 |2 }" @. H
复用的是PA-0口 $ W& `( [$ {7 a
( T/ x: ?5 H& Y+ y5 R
外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断,5 ~7 @1 ]% |4 c l0 M1 G 预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+1( ` J5 L" I9 e 定时器中断代码总结:+ p% G+ I# W1 s6 S' j/ N" o# ] # M1 R. a' E7 d: j8 S 打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体, I8 q& a& u( T! G) c* y3 z ^ 打开中断定时通道进入NVIC 配置NVIC中断优先级,打开计数器( l6 ~6 U! I5 T/ G/ N8 D 外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发 不用预分频 就直接用周期来进行判断进入中断 ————————————————1 E9 ]. w* D: g F: j 版权声明:小聪不想秃头 如有侵权请联系删除 n* H1 A+ l1 v, J( c : u: G: k0 [5 V" k |
经验分享 | 利用TIMER定时和捕获功能实现编解码演示
STM32 LSE 不起振排查指南:五大核心原因与快速解决方案
我心中的ST中文论坛
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
2025软件工具兔哥知道
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
经验分享 | 一个基于TIMER事件的中断响应话题_续
经验分享 | 一个基于TIMER事件的中断响应话题
11张图学会STM32定时器!
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
微信公众号
手机版