Bootstrap

stm32定时器定时中断

主频72MHz:最大计时59.65s

基本定时器:

基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应

主模式触发DAC 硬件自动化

通用定时器:

计数模式不只一种:

向上计数:计数器累加到自动重装载模式的值后进行中断相应

向下计数:自动重装载模式中的值向下减到0后进入中断

中央对齐: 向上计数到自动重装载值中断产生向下自减到0后进行中断的产生

定时器级联:初始化TIM3(使用主模式)把更新事件映射到TRGO上 选择TIM2 对应的就是TIM3的TRGO   选择外部时钟1 

 定时器的使用: ETR引脚,CH1、2、3、4 边沿  其他定时器

输出控制可以产生PWM波形 ,左边的输入捕获可以捕获输入的频率

 初始化定时器

开启定时器的时钟线RCC, 选择时钟(内部时钟可以不调用),定义时基单元,配置时基单元(定义时基单元结构体,)初始化时基结构体,更新中断到NVIC,配置NVIC 的分组  ,定义NVIC结构体 , 配置NVIC结构体 , 初始化NVIC结构体,启动定时器

定时器中断函数:判断标志位,清除标志位

NVIC结构体:中断通道,使能  抢占优先,相应优先级

时基单元结构体;: 指定时钟分频,计数模式,时钟周期,预分频,高级定时器配置给0

预分频是将前面的整数弄掉,时钟周期是自己想设置的定时长度 可以这么理解 时钟周期+上预分频一共有6个0  以定时一秒为例:

预分频:  7200-1  时钟周期: 10000    定时的长度=72000000/ 预分频 /  时钟周期

找到TIM的定时器库函数:

第一个:清空配置

 第二个:时机单元初始化

 Timebasestruct  附一个默认值

TIM_cmd  使能定时器

 TIM——ITconfig  使能中断

选择时钟

  具体步骤:

这里的分频和自动重装值需要理解一下

 72M/分频/计数个数:

72M分频7200为10kHZ 然后计数10000,得到的时间就是为1s

 打开定时器时清除中断的标志位

 

 判断中断标志位然后进行相关的操作

外部定时中断: 通过外设的变化让定时器的计数值进行加减,然后进入中断

使用的外部时钟,需要用到GPIO

配置外部时钟; 配置外部触发的时钟

 复用的是PA-0口

 外部重装值:外部产生一个信号号重装值+1,当加到9时进入中断,

预分频:外部产生多个信号重装值+1;没有预分频,外部产生一次中断重装值+1

定时器中断代码总结:

打开定时器的相关时钟,选择定时器的时基单元,配置时基单元结构体,

打开中断定时通道进入NVIC

配置NVIC中断优先级,打开计数器

外部中断时钟触发定时器,需要用到相关的GPIO口来进行定时器的触发

不用预分频 就直接用周期来进行判断进入中断

;