在使用单片机的时候我们常用到的中断,但是但是我们常说的中断都是由(内核的)外部事件引起的、正常的紧急事件。而异常与我们所说的中断相似,但也有不同之处。
异常(内核中断)和外部中断
异常是CPU内部产生的中断,即在CPU执行特定指令的时候出现的非法情况,如除数为0等等,所以不可能在执行指令期间发生异常,只会在执行一条指令后有可能发生,所以也称同步中断。而中断则是一种异步的,它与特定的进程是无关的,又称为异步中断。
CM3 内核支持 256 个中断,其中包含了 16 个内核中断(主要用于系统异常)和 240 个外部中断,并且具有 3 个固定的高优先级和256级(8位)的可编程中断设置。因为芯片设计者可以修改 CM3 的硬件描述源代码,所以做成芯片后,支持的中断源数目常常不到 240 个,并且优先级的位数也由芯片厂商最终决定,实际上支持的优先级数会少于256级(8位),如 8 级(3位),16 级(4位),32(5位) 级等。需要注意的是CM3允许的最少使用位数为3个位,即至少支持8级优先级。
STM32 有 84 个中断,包括 16 个内核中断和 68 个外部中断,具有 16 级(4位)可编程的中断优先级。而我们常用的就是这 68 个可屏蔽中断,但是 STM32 的 68 个可屏蔽中断,在 STM32F103 系列上面,又只有 60 个(在 107 系列才有 68 个)。
内核中断
内核中断如下图所示
需要了解的是NMI,不可屏蔽中断。我们知道,对于可屏蔽中断,除了受本身的屏蔽位的控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Interrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。对于不可屏蔽中断,CPU收到有效的NMI中断中断信号必须进行响应!不需要发出中断请求!不可屏蔽中断通常用于故障处理(如系统掉电等)。
外部中断
CM3内核的外部中断如下图所示,他们被芯片设计厂商定义为各种片上外设的中断请求接口。
中断向量表
当发生了异常并且要响应它时,CM3 需要定位其处理例程的入口地址。这些入口地址存储在所谓的“(异常)向量表”中。我们在启动文件中可以看到中断向量表,这里详细列举了该启动文件支持的所有中断,下面这个是STM32F103的启动文件。
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window Watchdog
DCD PVD_IRQHandler ; PVD through EXTI Line detect
DCD TAMPER_IRQHandler ; Tamper
DCD RTC_IRQHandler ; RTC
DCD FLASH_IRQHandler ; Flash
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line 0
DCD EXTI1_IRQHandler ; EXTI Line 1
DCD EXTI2_IRQHandler ; EXTI Line 2
DCD EXTI3_IRQHandler ; EXTI Line 3
DCD EXTI4_IRQHandler ; EXTI Line 4
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
DCD ADC1_2_IRQHandler ; ADC1_2
DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
DCD TIM1_BRK_IRQHandler ; TIM1 Break
DCD TIM1_UP_IRQHandler ; TIM1 Update
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
DCD TIM2_IRQHandler ; TIM2
DCD TIM3_IRQHandler ; TIM3
DCD TIM4_IRQHandler ; TIM4
DCD I2C1_EV_IRQHandler ; I2C1 Event
DCD I2C1_ER_IRQHandler ; I2C1 Error
DCD I2C2_EV_IRQHandler ; I2C2 Event
DCD I2C2_ER_IRQHandler ; I2C2 Error
DCD SPI1_IRQHandler ; SPI1
DCD SPI2_IRQHandler ; SPI2
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
DCD USART3_IRQHandler ; USART3
DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line
DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
__Vectors_End
优先级
内核中断编号1-3为3 个系统异常:复位,NMI 以及硬 fault,它们是不可编程的有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常(优先级的数值越小,则优先级越高),所有其它异常的优先级则都是可编程的(优先级不能使负数)。
CM3支持中断嵌套,NMI和外部中断优先级由NVIC中断管理器进行管理。我们知道STM32支持16级(4位)可编程优先级,与51单片机不同,这里的优先级包括了抢占优先级和响应优先级(或称亚优先级)。即抢占优先级和响应优先级共占4位,共同构成了16级(4位)优先级。根据抢占优先级和响应优先级分别占多少位,STM32 将中断分为 5 个组,组 0~4,对应关系如下:
上一篇:STM32-NVIC中断嵌套优先级管理器
下一篇:STM32-PA13、PA14、PA15、PB3、PB4等默认为仿真功能引脚重映射为普通IO
推荐阅读最新更新时间:2024-11-11 10:13
推荐帖子
- 串口通信
- 我现在用RS232进行PC机和单片机的通信,在用串口调试助手的时候,发现单片机发送回来的数据是乱码,请问这是什么原因?串口通信那单片机接收到的数据正确吗?程序很简单,只是为了测试是否成功通信晶振是6MHz#includereg52.hunsignedcharflag,a;voidmain(){TMOD=0x20;//设置定时器1为工作方式2TH1=0x8f;TL1=0x8f;TR1=1;REN=1;SM0=0;
- tyqlark 嵌入式系统
- 刚画好的CC1100PCB
- 最近公司要用CC1100做个433M无线通信的方案,要求是外挂天线的。我花了半天的画了个小模块,感觉天线部分的布局有点别扭,但又说不上来,各位高手帮忙看看。刚画好的CC1100PCB第二层是地平面吗,balun可以靠近RFIC对称放置,PI滤波器也作匹配用途,可以靠近SMA端子放置。RF信号走线有没有控制特征阻抗。画得不错,天线为什么不画上原帖由kata于2011-2-1218:32发表第二层是地平面吗,balun可以靠近RFIC对称放置,PI滤波器也作匹配
- yang_swust RF/无线
- 【雅特力开发板 AT32F421 测评】- 入门教程
- 一个人的力量是有限的,有心人会总结大家的经验,一路前行!【雅特力开发板AT32F421测评】-入门教程本文讲述F421入门相应操作以及细节说明。AT32F421的使用根据不同编译平台使用方式也是不同,我用的是KEIL5,直接安装对应驱动包,上篇的资料整理有对应的下载地址,解压安装这两个驱动和pack包就可以打开官方的工程,或者自己建立相应的工程,下图是我自己建立的程序和根据雅特力给出的官例写的BSP包,供上层应用使用芯片的使用和工程的创建以及相应的操作我
- Albert.G 国产芯片交流
- 求推荐一款fpga
- 本帖最后由paulhyde于2014-9-1509:29编辑要容量比较大,能进行较为复杂的计算的谢谢诸位啦求推荐一款fpga本帖最后由paulhyde于2014-9-1509:29编辑...........................
- zpsuper2008 电子竞赛
- 【设计工具】特别适用于Virtex-5 LXT、理想解决方案
- 当今的多业务光网络要求收发器必须能够适应广泛的输入数据速率。高速串行I/O具有内在的数据速率处理下限,可以防止轻易连接到低速客户信号。PaoloNovellini与GiovanniGuasti在本应用指南中介绍的非整数数据恢复单元(NI-DRU)由查找表(LUT)和触发器组成,特别适用于Virtex-5LXT、SXT、TXT与FXT平台中的RocketIO™GTP与GTX收发器。NI-DRU可以让数据速率下限降低到0Mbps,同时把上
- GONGHCU FPGA/CPLD
- IPTV“圈地”
- 本帖最后由jameswangsynnex于2015-3-320:00编辑IPTV燎原前夜的新“圈地”运动2006-7-21百亿市场待启动IPTV是网络电视的简称,所谓网络电视是指用户可以通过互动点播的方式选择电视节目,并进行主动的操作。而从接收终端来看,主要有电视和电脑。根据InformaTelecoms&Media公司在2005年8月公布的一份调查报告结果中预测,到2010年,全球IPTV的用户将由250万用户增长到
- hkn 移动便携
设计资源 培训 开发板 精华推荐
- LTC3624IDD-5 5V 输出电压、2A 同步降压型稳压器的典型应用,具有 2.25MHz
- LTM8028 的典型应用 - 36VIN、UltraFast、低输出噪声 5A 模块稳压器
- 用于 LCD 显示器的 40W、18V 交流转直流单路输出电源
- LT1317BCS8 PWM DC/DC 转换器的典型应用电路
- ATtiny Flasher:用于 Atmel ATtiny 的开放式硬件刷写工具
- #第五届立创电子设计大赛#基于2.4G的无线音频传输设备
- KAE-02152-AB-SD-A-GEVK:KAE-02152 TEC 评估套件(单色)
- STEVAL-CBL010V1,基于 LNBH25 单 LNB 电源和控制 IC DiSEqC 2.0 的评估板
- 使用 ams AG 的 AS1312-BTDT-33 的参考设计
- SBC-S32V234: S32V视觉和传感器融合评估板