NVIC中断与定时器学习

NVIC中断与定时器

(一)NVIC
1、NVIC的特性

● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道
● 16 个可编程优先级(使用了 4 位中断优先级)
● 低延迟异常和中断处理
● 电源管理控制
● 系统控制寄存器的实现

2、中断优先级(4位)
优先级组别占先式优先级副优先级
44位/16级0位/1级
33位/8级1位/2级
22位/4级2位4级
11位/2级3位/8级
00位/1级4位/16级

前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4
前提条件2:“组”优先级别>“抢”占优先级别>“副”优先级别
前提条件3:同一组优先级别中,不同的抢占级别之间,其中一抢占级别正在做事,另外抢占级别不能打断他;(即”同一组优先级下的中断源间,没有中断嵌套“)
前提条件4:不同组优先级别间,依据优先级强弱,优先级别高的组的中断源可以打断优先级别低的组的正在做的事情;(即:不同组优先级间,可以中断嵌套)

(二)外部中断/事件控制器(EXTI)

外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可 单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。
1)EXTI的特性
● 每个中断/事件线上都具有独立的触发和屏蔽
● 每个中断线都具有专用的状态位
● 支持多达 23 个软件事件/中断请求
● 检测脉冲宽度低于 APB2 时钟宽度的外部信号。
2)中断与事件选择

硬件中断选择

要配置 23 根线作为中断源,请执行以下步骤:
● 配置 23 根中断线的屏蔽位 (EXTI_IMR)
● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR) ● 配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断
线中的请求可以被正确地响应。

硬件事件选择

要配置 23 根线作为事件源,请执行以下步骤:
● 配置 23 根事件线的屏蔽位 (EXTI_EMR)
● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)

软件中断/事件选择

可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。
● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR) ● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER)

EXTI寄存器

1)中断屏蔽寄存器 (EXTI_IMR)
在这里插入图片描述
2)事件屏蔽寄存器 (EXTI_EMR)
在这里插入图片描述
3)上升沿触发选择寄存器 (EXTI_RTSR)
在这里插入图片描述
4)下降沿触发选择寄存器 (EXTI_FTSR)
在这里插入图片描述
5)软件中断事件寄存器 (EXTI_SWIER)
在这里插入图片描述
6)挂起寄存器 (EXTI_PR)
在这里插入图片描述

产生的疑惑:

1、中断的优先级是因为有很多设备才要分出优先级的?
2、上升沿触发和下降沿触发是什么,有什么具体的作用?
3、中断和事件的作用怎么体现出来?

定时器
(一)高级控制定时器(TIM1 TIM8)

1)TIM1 和 TIM8 定时器具有以下特性:
● 16 位递增、递减、递增/递减自动重载计数器。
● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数
介于 1 到 65536 之间。
● 多达 4 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
● 带可编程死区的互补输出。
● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
● 重复计数器,用于仅在给定数目的计数器周期后更新定时器寄存器。
● 用于将定时器的输出信号置于复位状态或已知状态的断路输入。
● 发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
— 断路输入
● 支持定位用增量(正交)编码器和霍尔传感器电路。
● 外部时钟触发输入或逐周期电流管理。
2)时基单元:
● 计数器寄存器 (TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)
● 自动重载寄存器 (TIMx_ARR)
● 重复计数器寄存器 (TIMx_RCR)

(二)通用定时器(TIM2到TIM5)

1)通用 TIMx 定时器具有以下特性:
● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计
数器。
● 16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介
于 1 到 65536 之间。
● 多达 4 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
● 发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
● 支持定位用增量(正交)编码器和霍尔传感器电路
● 外部时钟触发输入或逐周期电流管理
2)时基单元:
● 计数器寄存器 (TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)
● 自动重载寄存器 (TIMx_ARR)

(三)通用计时器(TIM9到TIM14)

1)TIM9 到 TIM14 通用定时器具有以下特性:
● 16 位自动重载递增计数器(属于中等容量器件)
● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数
介于 1 和 65536 之间
● 多达 2 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿对齐模式)
— 单脉冲模式输出
● 使用外部信号控制定时器且可实现多个定时器互连的同步电路
● 发生如下事件时生成中断:
— 更新:计数器上溢、计数器初始化(通过软件或内部触发)
— 触发事件(计数器启动、停止、初始化或者由内部触发计数)
— 输入捕获
— 输出比较
2)时基单元:
● 计数器寄存器 (TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)
● 自动重载寄存器 (TIMx_ARR)

(四)基本定时器(TIM6 TIM7)

1)基本定时器(TIM6 和 TIM7)的特性包括:
● 16 位自动重载递增计数器
● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数
介于 1 和 65536 之间
● 用于触发 DAC 的同步电路
● 发生如下更新事件时会生成中断/DMA 请求:计数器上溢
2)时基单元:
● 计数器寄存器 (TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)
● 自动重载寄存器 (TIMx_ARR)

了解每个定时器的特性与时基单元后,预分频寄存器,与计数器寄存器,自动重载寄存器的说明详见stm32f4xx参考手册。

产生的疑惑

1、CK_INT的频率不变,定时器分频就是改变计数器的的时序,2分频的内部时钟,也就是时间变长了?(我看见计数器寄存器那里的长度变了)
2、所以可以用定时器来改变内部时钟,那么分频的目的是什么,有什么功能?
3、产生的更新事件是计数器上溢了(到了36就回到0),那这个更新事件就保留着有什么作用,有些时候又要禁止,是为什么?
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值