主频72MHz:最大计时59.65s. [* |6 b& O) z" h) ^ 6 X- `1 U3 P$ K% ^$ G. B / Y: T+ @$ K$ _ 基本定时器:4 e3 U" B' [, }; N0 r: Q $ I( Q8 }/ ^8 P u5 L 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应 主模式触发DAC 硬件自动化 8 T! _8 Z( z" P* Y8 n 通用定时器: 计数模式不只一种:# d" U4 s* d- W 向上计数:计数器累加到自动重装载模式的值后进行中断相应 向下计数:自动重装载模式中的值向下减到0后进入中断! ~, ^* u* X9 {4 A6 S% E6 u 中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生 1 q5 g4 [. Y* C* c 定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO 选择外部时钟1 2 x/ A& P7 L% X! l 定时器的使用: ETR引脚,CH1、2、3、4 边沿 其他定时器1 E2 C$ E4 G2 n$ r: j/ y 输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率 初始化定时器 开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组 ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器 定时器中断函数:判断标志位,清除标志位, t2 T D3 t. U, u2 s NVIC结构体:中断通道,使能 抢占优先,相应优先级9 t* E8 Y( |. d' P& p6 d( \ & H3 x) M; J: r/ x: [* ?$ i3 {. v3 c 时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0' K/ D9 z! \/ x* j; W3 m" _ : a0 z! t9 }9 O 预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0 以定时一秒为例: 预分频: 7200-1 时钟周期: 10000 定时的长度=72000000/ 预分频 / 时钟周期 * [6 j6 F7 c0 `3 r( S0 W S 找到TIM的定时器库函数:& p# b) r1 \; O/ V% r / h: m+ ?+ @# ? ?( v+ c 9 Y" p" P" o& ~% j- j" Y 第一个:清空配置 第二个:时机单元初始化3 J; _" s) z, u' L- [ , P' N' h+ f/ B* v Timebasestruct 附一个默认值" V, H# f' G6 \4 k ; j3 E$ E8 u5 S \+ r* P3 U TIM_cmd 使能定时器 0 i& x8 h5 m+ @ TIM——ITconfig 使能中断9 T3 q. n# O( l4 A9 u. r% `# T- d " x+ w0 R2 S+ h% H, o 选择时钟 ( v3 K y4 ~, y4 v- Y 具体步骤:, [9 |% v- B Y1 C% U% ~ 4 f" i; X9 D; |8 Y3 E 这里的分频和自动重装值需要理解一下 / B* ^0 K$ ]5 D6 L 72M/分频/计数个数: 72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s $ S9 t0 x( G' q+ }3 P, Z2 ` 打开定时器时清除中断的标志位 / @: P. c9 s' @" {3 d. d( k3 c " G! M# m. q# {5 A7 w, I 判断中断标志位然后进行相关的操作2 u+ G% `$ O- e' g ( @, `3 s0 W: p: |2 i8 x 外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断 ( D! _# D) O9 l8 {/ ]6 o 使用的外部时钟,需要用到GPIO6 b6 m" q* z/ g5 @1 F8 B S ; M, o3 {+ t+ u, f% N+ U1 b5 c 配置外部时钟; 配置外部触发的时钟 - O. }1 m4 \9 F, z& _! U/ z 复用的是PA-0口 * f6 g7 `+ G ~7 q4 E- E# X* @ 外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断, $ g# Z: q0 x( j, o( e$ d$ ~ 预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+1. x: P# Q I0 ^, G( C! T * Q$ T: [4 }$ \7 Y! B 定时器中断代码总结:1 r, }+ ~# O1 q9 k: `2 I 打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体, 打开中断定时通道进入NVIC 配置NVIC中断优先级,打开计数器 外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发 不用预分频 就直接用周期来进行判断进入中断3 U% J6 |8 a9 {. i; c% P ———————————————— 版权声明:小聪不想秃头) r# i* q1 x, ?. k' ~ 如有侵权请联系删除 {2 L- g+ I& k: D 5 @ c8 d5 w, y+ l2 Z! X {5 k |
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
基于STM32串口中断之缓存区溢出卡死经验分享
基于STM32数组越界异常中断经验分享
基于STM32之数组越界异常中断经验分享
定时器剩余通道是否可以做PWM输出呢?
基于STM32连接参数更新进程后导致断连的问题分析
基于STM32连接参数更新进程后导致断连的问题分析