主频72MHz:最大计时59.65s( W; V4 \) [2 n9 R6 C4 P $ D& C9 I" a) j- D% @! c, ? , B4 y5 J8 Q# o. E# L2 n/ u3 O 基本定时器: ( ^7 _- a6 ~* k) c 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应" y9 N6 } O" U 主模式触发DAC 硬件自动化 ) S3 j1 D5 n! x$ D) ^) _; w ?' ] 通用定时器:# C$ i+ t/ H! j# n6 t6 _% z 计数模式不只一种: 向上计数:计数器累加到自动重装载模式的值后进行中断相应# r3 u8 I% Q- S3 ? 向下计数:自动重装载模式中的值向下减到0后进入中断 中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生 定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO 选择外部时钟1* h/ i# v+ v7 K3 a+ O# }9 } 定时器的使用: ETR引脚,CH1、2、3、4 边沿 其他定时器; r3 b8 x; z5 T; C2 b 0 N" P9 Z8 Q$ q" c* x- H) {* M0 } 输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率 $ }. b0 T" j; L( v * n! o* B+ f0 T- E, L9 W 初始化定时器' @5 r% c: \* H2 V; ?1 o/ M4 y 开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组 ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器( O/ v7 |2 v: P) M 定时器中断函数:判断标志位,清除标志位) J9 m( d$ M/ M! t- k NVIC结构体:中断通道,使能 抢占优先,相应优先级 , {) L% q! r/ v& e9 h 时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0 预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0 以定时一秒为例: 预分频: 7200-1 时钟周期: 10000 定时的长度=72000000/ 预分频 / 时钟周期 找到TIM的定时器库函数:' ^" U- _1 n3 n! a( E 第一个:清空配置 第二个:时机单元初始化 d! Y( J, W7 G; Q6 D& ? ! W* k' \$ \7 E+ a3 H5 y Timebasestruct 附一个默认值 H7 H `' H8 k+ f! Q( ?* { TIM_cmd 使能定时器 , Q. b2 v8 ~0 ` TIM——ITconfig 使能中断 - L0 P0 k9 A" ]0 o$ I7 b1 Q5 y v! R 选择时钟) r8 M$ {# J3 ]1 P ( Y% Y0 k( n6 h* ~ 具体步骤: ! V. [7 E* g9 @ a 这里的分频和自动重装值需要理解一下# I$ ], W- F1 t1 o* x 6 p$ f0 \$ @6 @3 C 72M/分频/计数个数:0 c5 @1 K ]$ @ " r4 f+ U5 f( g2 J 72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s* X. I& A7 {3 W. O8 x$ {# b b - A. p, D" `6 _0 Z; e6 K- T/ s : `0 ]# [8 Z/ l1 B3 ` 打开定时器时清除中断的标志位& e( [! s; u- f% @5 @" e) r ; s8 d: r& J8 ~/ R - H. r. Q( W& v) C2 r s& ?* K 判断中断标志位然后进行相关的操作 7 \8 f; ^8 ~" ]: L4 ~; |# C7 U+ L 外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断 使用的外部时钟,需要用到GPIO ' p: A# _7 ` x 配置外部时钟; 配置外部触发的时钟- j3 t9 @! H6 B6 i I) i8 _: t ' F; j7 M [% k 复用的是PA-0口 外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断,! ~: ~. m. N1 Z8 z 预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+1/ H7 s8 w- Y \. T+ x 定时器中断代码总结: 打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体,2 y1 d% R M( y' ]; [0 M 打开中断定时通道进入NVIC 配置NVIC中断优先级,打开计数器! Y" q3 B- G3 _- D9 U% G' K 外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发" c4 i. k* T3 i# ~ 不用预分频 就直接用周期来进行判断进入中断5 s1 Y U q% @; I) G3 c ———————————————— 版权声明:小聪不想秃头2 x+ ]- [6 t0 f- X) w) L 如有侵权请联系删除 ( H. g2 z/ h* ]) n+ k % X K; J& g# V v8 f f- D |