EXTI外部中断
NVIC:嵌套中断向量控制器(分配中断优先级管理中断)用于分配管理哪个中断先执行。
EXTI:外部中断(边沿检测及控制)
AFIO:中断引脚选择(GPIOA,GPIOB,GPIOC等,每个只能选择其中一个引脚。)一共16个
整体流程:
AFIO选择中断引脚 -> EXTI检测中断 -> NVIC管理中断,选择启动哪个中断。
TIM 定时器
时基单元
- 16位计数器(用来计数)每来个上升沿,计数器的值加1,值可以从0-65535
- 预分频器(使计数更加灵活)与实际相差1(如果预分频是0,则72/1,如果预分频是1,则72/2。)所以预分频器一般些65535=65536
- 自动重装寄存器(设置想要计数多少个时钟申请中断)用于存储计数目标
注:主频一般72MHZ (72MHz计72个数,那就是1MHz也就是1us的时间)
最大定时时间是59.65s
(解释:预分频和自动重装都设置最大为 2的16次幂X2的16次幂=25536X25536=可记录的最大震荡次数N,N/(每秒震荡次数)72MHz=最大计时59.65s)
整体流程为:基准时钟72Hz先到预分频器进行分频,然后计数器计数自增同时不断的与自动重装寄存器进行比较,如果达到目标值则产生定时中断。
基本定时器 支持向上计数
首先使用内部时钟主频72Hz(来自RCC的TIMxCLK),再到时基单元。
1.首先到预分频器对72预分频(如果是0则是1分频72/1,如果是1则是2分频72/2)
2.再到CNT计数器(每来个上升沿计数器的值加1)16位可以从0到65535
3.最后跟自动重装载寄存器比较(写的是计数目标,如果达到目标产生中断)
4.产生的中断有(1.更新中断(通往NVIC)2.更新事件(可触发内部其他电路工作))
通用定时器(支持向上计数,向下计数,中央对齐)
不仅可以选择内部时钟,还可以选择外部时钟。
ETR(外部时钟)。
TRGI(也可以提供时钟)触发输入,可作为输入的有(1.ETR引脚 2.其他定时器 3.CH1引脚的边沿 4.CH1引脚 5.CH2引脚 6.内部72Hz时钟最常用)
高级定时器
可以对定时周期再次分频。实现每隔几个计数周期才发生一次更新事件和更新中断.
定时中断结构
时钟源选择:
- RCC内部时钟。
- ETR引脚提供的 外部时钟模式2
- 触发输入ITRX ETR引脚提供 TIx输入捕获通道 外部时钟模式1
- TIx输入捕获通道 编码器模式
TIM输出比较和输入捕获
输入捕获:检测电平跳变,执行CNT锁存CCR。
输出比较:比较CNT与CCR的大小关系执行输出动作。
输入捕获
(频率高)测频法:N次数/T规定时间 =频率
(频率低)测周法:1/(fc设定的标准频率*N次数)=N次数 / fc设定的标准频率 =频率