主频72MHz:最大计时59.65s
基本定时器: 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应 ! [: M0 h- h1 A5 `+ ^: S 主模式触发DAC 硬件自动化: ?8 }9 w, Q% g- w+ j" V5 S 5 j/ U( t8 M7 I* e: k i 通用定时器: g" D: T) @. d! O. b6 Q
计数模式不只一种:# C \: H3 v8 B) k) ~: \ 向上计数:计数器累加到自动重装载模式的值后进行中断相应 向下计数:自动重装载模式中的值向下减到0后进入中断 中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生2 R% b1 ?' ?5 ?5 y! F/ Q4 a & Y7 B# |2 [4 I$ S8 f! |
定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO 选择外部时钟1! q! k2 U. b* i8 {$ I 6 E9 N( m6 T7 F% i 定时器的使用: ETR引脚,CH1、2、3、4 边沿 其他定时器( n4 K! {4 \8 N- L! x- T 9 D. m4 G s9 y9 R 输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率 0 i. K1 c% ~0 E. W8 v# [. N
+ i" V% b) S% a2 p6 z5 S 初始化定时器* P0 \, X0 q" K* J7 \" t8 k 开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组 ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器( h" Y3 k8 K6 o 定时器中断函数:判断标志位,清除标志位 NVIC结构体:中断通道,使能 抢占优先,相应优先级( ^& S! R5 R$ S F0 i( C1 Q. e 时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0 预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0 以定时一秒为例: $ E, Q' B6 B+ k 预分频: 7200-1 时钟周期: 10000 定时的长度=72000000/ 预分频 / 时钟周期; j: k$ N- ]: O. [: U, K ( G! t# f4 ] b7 g3 _' Y3 R& K 找到TIM的定时器库函数:
N0 m& h# b8 [5 v9 U 第一个:清空配置 第二个:时机单元初始化 8 |# K( j3 r( N( }* o, d: K Timebasestruct 附一个默认值( H. P' x) R2 u* G; f 3 e. F% _; {; n" x' r TIM_cmd 使能定时器
TIM——ITconfig 使能中断# Q. n5 P) q5 g: t* @6 T+ \% r: j
选择时钟 " Q7 O5 l8 k, P: `' A+ {! ?( l; N 具体步骤:6 ]" h! r4 t: @# }. U% G# m + T1 r2 ?& }0 ?: A; ?
这里的分频和自动重装值需要理解一下 ) U* ^# X5 K0 v
72M/分频/计数个数:- I S& o. b/ j, _! f- y2 i 72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s) t, C4 y7 S5 A5 u4 T6 Y, U " Q1 o7 D6 ^5 X: x% {2 z" _
打开定时器时清除中断的标志位! |( u. e. B- B$ x/ k( P8 o
* O) j/ R) Q# {$ j: e; A 判断中断标志位然后进行相关的操作4 {$ {. L( [6 j8 ^4 [; P- M1 w 外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断) u* H! ?2 E; O ( P; @- |4 Z2 t- X" j$ s 使用的外部时钟,需要用到GPIO + W; m% K+ N0 c1 r8 G! _8 W8 j 配置外部时钟; 配置外部触发的时钟
复用的是PA-0口* t, y5 k- M( P3 }+ f # Y& g X) P; Q% _
外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断,0 h7 R; d3 i6 V5 }5 p7 B& X 预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+1& k9 V6 W% r* b2 t; I J 定时器中断代码总结:( _5 A% z. c4 v- {" Z 打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体,5 E8 x( X0 p& n$ ` 打开中断定时通道进入NVIC 6 f3 ?/ A. V( q a 配置NVIC中断优先级,打开计数器 外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发 不用预分频 就直接用周期来进行判断进入中断 ————————————————$ r8 q, Z ]* h' Q2 \) F 版权声明:小聪不想秃头, a4 U' l4 l( ]" w6 |( } u# m 如有侵权请联系删除 2 T: M" h& r+ l, e- B( v, B R ( {5 Q9 r0 k% |9 b6 B |
【福利三:雨露均沾·逢7狂欢】之一:STM32F1外部中断异常故障的解决办法
经验分享 | 利用TIMER定时和捕获功能实现编解码演示
STM32 LSE 不起振排查指南:五大核心原因与快速解决方案
我心中的ST中文论坛
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
2025软件工具兔哥知道
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
经验分享 | 一个基于TIMER事件的中断响应话题_续
经验分享 | 一个基于TIMER事件的中断响应话题
11张图学会STM32定时器!
微信公众号
手机版