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字节前导码:如按最 ...
随机推荐
- Python网络爬虫:空姐网、糗百、xxx结果图与源码
如前面所述,我们上手写了空姐网爬虫,糗百爬虫,先放一下传送门: Python网络爬虫requests.bs4爬取空姐网图片Python爬虫框架Scrapy之爬取糗事百科大量段子数据Python爬虫框架 ...
- 20 Zabbix 利用Scripts栏目对Hosts远程执行命令
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 20 Zabbix 利用Scripts栏目对Hosts远程执行命令 在Monitoring板块中, ...
- 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
点击返回 自学Linux命令行与Shell脚本之路 9.4-基于Red Hat系统工具包存在两种方式之二:源码包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方式 ...
- BZOJ 1195: [HNOI2006]最短母串
1195: [HNOI2006]最短母串 Time Limit: 10 Sec Memory Limit: 32 MBSubmit: 1346 Solved: 450[Submit][Status ...
- luogu3646 巴厘岛的雕塑 (dp)
我们一位一位地来做,每次判断这一位能否放0,而且要在满足前几位的情况下.用dp来判断 具体来说,设f[i][j]表示前i个划分成j个区间能否满足,那么我们会有转移trans[i][k+1],当区间[i ...
- A1074. Reversing Linked List
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...
- 跟我一起学习vue2(学习工程目录)[三]
查看生成的my-project的工程目录 首先看 build是最终发布的代码存放位置. 我查看了一下目录,里面都是Js文件 config目录里面主要是配置目录,包括端口号.如果开的项目多,可以进入in ...
- centos中文字符集,中文日志
# CentOS 7 $ firewall-cmd --zone=public --add-port=80/tcp --permanent # nginx 端口 $ firewall-cmd --zo ...
- 在子类中调用父类的方法super
1.没有super之前,在子类里面需要父类里面的逻辑,但是我们是通过派生(自己定义了一个init,增加了一条line) class vehichle:#定义一个交通工具的类 Country=" ...
- python高级数据可视化Dash2
k 线国内版 python dash 的应用首页,是用一个 k 线图来做 damo 的,奈何数据源用的 Google,上不去.当然,可以换 yahoo,但是毕竟国内的还是更亲切些. 官方的 demo ...