欢迎来到天天文库
浏览记录
ID:36607462
大小:1.28 MB
页数:27页
时间:2019-05-09
《STM32外部中断实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ALIENTEK《例说STM32》例说STM322021/7/24广州市星翼电子科技有限公司1ALIENTEK开发板购买店铺店铺:http://eboard.taobao.comALIENTEK第6讲外部中断实验6.1STM32中断简介6.2中断管理相关寄存器6.3中断优先级分组6.4中断线6.5外部中断一般配置步骤6.6实验讲解《例说STM32》22021/7/24广州市星翼电子科技有限公司ALIENTEK6.1STM32中断简介《例说STM32》32021/7/24广州市星翼电子科技有限公司CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有
2、256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这68个可屏蔽中断,但是STM32的68个可屏蔽中断,在STM32F103系列上面,又只有60个(在107系列才有68个)。ALIENTEK《例说STM32》42021/7/24广州市星翼电子科技有限公司STM32的每个IO都可以作为外部中断的中断输入口,这点也是STM32的强大之处。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位,每个中断/事件
3、都有独立的触发和屏蔽设置。STM32F103的19个外部中断为:线0~15:对应外部IO口的输入中断。线16:连接到PVD输出。线17:连接到RTC闹钟事件。线18:连接到USB唤醒事件。ALIENTEK6.2中断相关寄存器《例说STM32》52021/7/24广州市星翼电子科技有限公司在MDK内,与NVIC相关的寄存器,MDK为其定义了如下的结构体:typedefstruct{vu32ISER[2];u32RESERVED0[30];vu32ICER[2];u32RSERVED1[30];vu32ISPR[2];u32RESERVED2[30];vu32ICPR[2];u
4、32RESERVED3[30];vu32IABR[2];u32RESERVED4[62];vu32IPR[15];}NVIC_TypeDef;ALIENTEK《例说STM32》62021/7/24广州市星翼电子科技有限公司ISER[2]:ISER全称是:InterruptSet-EnableRegisters,这是一个中断使能寄存器组。上面说了STM32F103的可屏蔽中断只有60个,这里用了2个32位的寄存器,总共可以表示64个中断。而STM32F103只用了其中的前60位。ISER[0]的bit0~bit31分别对应中断0~31。ISER[1]的bit0~27对应中断3
5、2~59;这样总共60个中断就分别对应上了。您要使能某个中断,必须设置相应的ISER位为1,使该中断被使能(这里仅仅是使能,还要配合中断分组、屏蔽、IO口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考stm32f10x_nvic..h里面的第36行处。ALIENTEK《例说STM32》72021/7/24广州市星翼电子科技有限公司ICER[2]:全称是:InterruptClear-EnableRegisters,是一个中断除能寄存器组。该寄存器组与ISER的作用恰好相反,是用来清除某个中断的使能的。其对应位的功能,也和ICER一样。这里要专门设置一个
6、ICER来清除中断位,而不是向ISER写0来清除,是因为NVIC的这些寄存器都是写1有效的,写0是无效的。具体为什么这么设计,请看《CM3权威指南》第125页,NVIC概览一章。ALIENTEK《例说STM32》82021/7/24广州市星翼电子科技有限公司ISPR[2]:全称是:InterruptSet-PendingRegisters,是一个中断挂起控制寄存器组。每个位对应的中断和ISER是一样的。通过置1,可以将正在进行的中断挂起,而执行同级或更高级别的中断。写0是无效的。ICPR[2]:全称是:InterruptClear-PendingRegisters,是一个中
7、断解挂控制寄存器组。其作用与ISPR相反,对应位也和ISER是一样的。通过设置1,可以将挂起的中断接挂。写0无效。ALIENTEK《例说STM32》92021/7/24广州市星翼电子科技有限公司IABR[2]:全称是:ActiveBitRegisters,是一个中断激活标志位寄存器组。对应位所代表的中断和ISER一样,如果为1,则表示该位所对应的中断正在被执行。这是一个只读寄存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。ALIENTEK《例说STM32》102021/7/24广州市星翼
此文档下载收益归作者所有