
主频72MHz:最大计时59.65s- b5 Q( G! m& C k/ }![]() 8 W( M) s" }' q. B: H3 f. C6 T 基本定时器:# m5 P n) c2 G+ [ } " j# V# G" T, Q2 L: [8 c* J8 l5 n 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应# g# q: T8 b6 i. p 主模式触发DAC 硬件自动化 0 ^5 M: i. ^5 O I! G6 m) G3 a2 p 通用定时器:# k* h, X+ @3 F% c 3 s7 z) r0 R6 g7 k ![]() ; ]" e" ?! @/ T2 t$ ?" y 计数模式不只一种: 向上计数:计数器累加到自动重装载模式的值后进行中断相应: A& x0 t& M, _3 f! @% E 向下计数:自动重装载模式中的值向下减到0后进入中断1 I$ I. Z- P1 V! G& ` Y( P& K 中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生5 N. N6 D* J" h ![]() 定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO 选择外部时钟1 定时器的使用: ETR引脚,CH1、2、3、4 边沿 其他定时器 输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率 # l5 x e& j$ Y9 j ![]() 初始化定时器" F8 v7 i# z% h% T( ~' l. F 开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组 ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器 定时器中断函数:判断标志位,清除标志位 * K# @5 C, L! ]" \ NVIC结构体:中断通道,使能 抢占优先,相应优先级 时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0' g1 a y( U4 E: G% g+ l4 c) U4 b * C7 e% q" T8 G* j 预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0 以定时一秒为例: 6 o, A7 e0 o& i: J( O 预分频: 7200-1 时钟周期: 10000 定时的长度=72000000/ 预分频 / 时钟周期- `1 K0 I/ a2 B U6 b$ d 3 a, u2 I. F! c4 | 找到TIM的定时器库函数:6 Q7 o! N' x. I% U ![]() / o- x- A1 n4 I2 ~- U1 z4 s . V$ t- r+ q# w+ Q1 G+ q: Y1 T) z2 v 第一个:清空配置 , N* a6 `6 n p7 Y, ? 第二个:时机单元初始化 Timebasestruct 附一个默认值 6 ?; {% _0 C) p0 _, R3 g* P TIM_cmd 使能定时器: B: U2 p( c; R2 p1 y8 M' t9 m5 l ![]() TIM——ITconfig 使能中断3 E% ~3 O4 f% C# Y/ ]7 P3 N ![]() 选择时钟 4 S5 X f x6 y! S 具体步骤:5 R ?' t* D: b: p $ ^: ?1 {2 n% D# Z+ j ![]() 这里的分频和自动重装值需要理解一下 ![]() : H$ r4 v1 B8 t8 w* w5 ~) N4 k# I 72M/分频/计数个数:% \( M2 }' L: K 8 j1 R) S. \6 d/ n8 ?4 b" V 72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s ![]() 打开定时器时清除中断的标志位 ![]() 判断中断标志位然后进行相关的操作 ( D5 A P% d$ M. ` U8 ~ 外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断 + ^) ` S" X% H2 C 使用的外部时钟,需要用到GPIO 配置外部时钟; 配置外部触发的时钟! A' f" R# k2 f4 ]" s0 e* j ![]() 复用的是PA-0口( q, x- R0 w' Q2 u ![]() ![]() ( B2 p; V1 U, ^6 q 外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断, 预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+1 7 f% j3 g1 t; [' ? 定时器中断代码总结: 打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体, 打开中断定时通道进入NVIC" O& V. r6 r3 q1 j8 n* ]: B 配置NVIC中断优先级,打开计数器 / R" v& V7 N( Y+ H/ [+ T2 a 外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发 ( D# R; l8 `: e 不用预分频 就直接用周期来进行判断进入中断& P/ O$ |; G$ T1 n" j ————————————————5 ? S* ~1 @5 @. D 版权声明:小聪不想秃头2 z: [5 ^1 }4 C9 L: P! X$ u 如有侵权请联系删除 # J' [5 O A7 p- M+ k7 I& T |
基于定时器捕获测量脉宽的应用示例
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
基于STM32串口中断之缓存区溢出卡死经验分享
基于STM32数组越界异常中断经验分享
基于STM32之数组越界异常中断经验分享
定时器剩余通道是否可以做PWM输出呢?
基于STM32连接参数更新进程后导致断连的问题分析