STM32F103X datasheet学习笔记---Interrupts and events
1.前言
本章主要介绍STM32中断和事件相关的内容
2.NVIC
NVIC管理着包括内核异常等中断
- 主要特性
68个外部中断源(不包含16个内部中断线)
可编程优先级为16级
低延迟异常和中断处理
电源管理控制
系统控制寄存器的实现
嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理晚到的中断
2.1 systick校准值寄存器
系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间基准。???
2.2 中断和异常向量



图 非互联STM3210XXX中断向量表
3. 外部中断/事件控制器(EXTI)

图 外部中断/事件控制器框图
- 主要特性
对于非互联产品,EXTI有19个边沿检测器组成
每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。
每个输入线都可以独立地被屏蔽。
挂起寄存器保持着状态线的中断请求
检测脉冲宽度低于APB2时钟宽度的外部信号
- 唤醒事件管理
STM32F10xxx可以处理外部或内部事件来唤醒内核(WFE)。唤醒事件可以通过下述配置产生:
● 在外设的控制寄存器使能一个中断,但不在NVIC中使能,同时在Cortex-M3的系统控制寄存器中使能SEVONPEND位。
当CPU从WFE恢复后,需要清除相应外设的中断挂起位和外设NVIC中断通道挂起位(在NVIC中断清除挂起寄存器中)。
● 配置一个外部或内部EXTI线为事件模式,当CPU从WFE恢复后,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或NVIC中断通道挂起位
- 硬件中断选择
通过下面的过程来配置20个线路做为中断源:
配置20个中断线的屏蔽位(EXTI_IMR)
配置所选中断线的触发选择位(EXTI_RTSR和EXTI_FTSR);
配置对应到外部中断控制器(EXTI)的NVIC中断通道的使能和屏蔽位,使得20个中断线中的请求可以被正确地响应。
- 硬件事件选择
通过下面的过程,可以配置20个线路为事件源
配置20个事件线的屏蔽位(EXTI_EMR)
配置事件线的触发选择位(EXTI_RTSR和EXTI_FTSR)
- 软件中断/事件的选择
20个线路可以被配置成软件中断/事件线。下面是产生软件中断的过程:
配置20个中断/事件线屏蔽位(EXTI_IMR, EXTI_EMR)
设置软件中断寄存器的请求位(EXTI_SWIER)
- 外部中断/事件线映射
112通用I/O端口以下图的方式连接到16个外部中断/事件线上:

图 外部中断通用IO映像
注:1. 通过AFIO_EXTICRx配置GPIO线上的外部中断/事件,必须先使能AFIO时钟
2. 另外四个EXTI线的连接方式如下:
● EXTI线16连接到PVD输出 ● EXTI线17连接到RTC闹钟事件 ● EXTI线18连接到USB唤醒事件 ● EXTI线19连接到以太网唤醒事件(只适用于互联型产品)
4.相关寄存器说明
中断屏蔽寄存器(EXTI_IMR):使能/屏蔽20路中断请求线
事件屏蔽寄存器(EXTi_EMR): 使能/屏蔽20路事件请求线
上升沿选择寄存器(EXTR_RTSR):使能/禁用20路上升沿触发线
下降沿选择寄存器(EXTR_FTSR):使能/禁用20路下降沿触发线
软件中断/事件寄存器(EXTR_SWIER):如果在EXTI_IMR和EXTI_EMR中允许产生该中断,当该位为’0’时,写’1’将设置EXTI_PR中相应的挂起位。则此时将产生一个中断
pending寄存器(EXTI_PR):是否有triger请求发生
STM32F103X datasheet学习笔记---Interrupts and events的更多相关文章
- STM32F103X datasheet学习笔记---RCC(reset and clock control)
1.前言 本文主要记录stm32 关于reset 和 clock部分 datasheet的内容. 2.reset 有三种类型的reset:system reset, power reset, back ...
- STM32F103X datasheet学习笔记---Flexible static memory controller (FSMC)
1.前言 FSMC模块能够与同步或异步存储器和16位PC存储器卡接口,它的主要作用是: 将AHB传输信号转换到适当的外部设备协议 满足访问外部设备的时序要求 所有的外部存储器共享控制器输出的地址.数据 ...
- STM32F103X datasheet学习笔记---DMA
1.前言 直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输. 无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作. 两个DMA控制器 ...
- STM32F103X datasheet学习笔记---USART
1.前言 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换. USART利用分数波特率发生器提供宽范围的波特率选择. 它支持同步 ...
- STM32F103X datasheet学习笔记---GPIOs and AFIOs
1.前言 每个GPIO端口有如下几个寄存器进行操作: 两个32位配置寄存器:GPIOx_CRL, GPIOx_CRH 两个32位数据寄存器:GPIOx_IDR, GPIOx_ODR 一个32位set/ ...
- ARMV8 datasheet学习笔记5:异常模型
1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构
1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...
- k64 datasheet学习笔记11---Port Control and Interrupts (PORT)
1.前言 Port Control and Interrupt (PORT) 模块提供了port control,digital filtering,和外部中断功能 每个pin的大部分功能可被独立配 ...
- k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之功能描述
1.前言 本文是对K64 datasheet 之ENET部分的功能描述,将对每个部分进行详细说明 2.Ethernet MAC frame formats MAC帧组成格式 (1)7字节前导码:如按最 ...
随机推荐
- 如何安装/卸载workflow manager 1.0
安装 1. 配置文件: <Workflow> <!--http://msdn.microsoft.com/en-us/library/windowsazure/jj193269(v= ...
- docker安装Zabbix
1. 先安装数据库mysqldocker run --name zabbix-mysql-server --hostname zabbix-mysql-server \-e MYSQL_ROOT_PA ...
- Android编程心得-在Assets文件夹中放入.sql文件实现创建SQlite表的操作
当我们在使用SQLiteOpenHelper时,经常使用db.execSQL(String sql)方法写入对应语句实现创建表的操作,这样的确可以实现业务逻辑.与此同时还有一种更灵活的方法,从asse ...
- 树莓派上使用KickThemOut对局域网内的设备进行ARP欺骗
安装KickThemOut工具 $ git clone https://github.com/k4m4/kickthemout.git $ cd kickthemout/ $ sudo -H pip ...
- 【POJ2248】加法链 idfs
首先,在这道题的搜索框架中,在对每一位进行枚举时,复杂度为\(O(n^2)\),但是可知最优解序列的长度不会太长. 其次,采用 \(bool\) 类型返回值时,是一种存在性搜索,并不一定能够得到最优解 ...
- Servlet学习:(三)Servlet3.0 上传文件
转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362 一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...
- EOJ2018.10 月赛(A 数学+思维题)
传送门:Problem A https://www.cnblogs.com/violet-acmer/p/9739115.html 题意: 能否通过横着排或竖着排将 1x p 的小姐姐填满 n x m ...
- linux command ------ tar
-c: compress archives -x:decompress archives -t:check archives -z:whether it has the attribute of gz ...
- C# 实现子窗体控制父窗体的方法
我们来实现这样一个功能:当父窗体打开一个子窗体时隐藏父窗体的Panel,而当子窗体关闭时让Panel显示.实现的主要思路是创建一个子窗体的父类并在类中声明一个委托,当父窗体调用子窗体时绑定显示P ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...