- 11
- 0
- 约2.28千字
- 约 4页
- 2017-07-09 发布于河南
- 举报
STM32之外部中断EXTI
STM32之外部中断EXTI
STM32中断控制线支持19个外部中断/事件请求,每个中断都有对应状态位和独立的触发与屏蔽设置。STM32F103的19个外部中断为:
线0-15:对应GPIO口的输入中断。
线16:连接到PVD输出(掉电检测,掉电时可立即保存重要数据作用)。
线17:连接RTC闹钟事件。
线18:连接到USB唤醒事件。
每个IO口都可作为外部中断输入口的STM32的IO口远多于16个,而IO口使用的中断线只有16个。为此,GPIO管脚GPIOx.0~GPIOx.15(X=A,F,G)分别对应中断线0-15.这样每个中断线对应了7个IO口。如线0对应着GPIOA.0,GPIOB.0,GPIOC.0,GPIOD.0,GPIOE.0,GPIOF.0,GPIOG.0但是每个中断线每次只能连接到1个IO口上。
这样就需要通过相关的配置来决定对应的中断线被配置到哪个GPIO上了。
GPIO和中断线的映射关系如下图:
GPIO与中断映射配置通过函数来实现
void GPIO_EXTILineConfig ( uint8_t? GPIO_PortSource, uint8_t? GPIO_PinSource? ) 例如:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE , GPIO_PinSource2);
即外部中断线2就和GPIOE映射起来了,显然是GPIOE.2与EXTI2中断线连接起来了。
接着需设置中断触发方式:
void EXTI_Init ( EXTI_InitTypeDef *? EXTI_InitStruct ) 例如:
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(EXTI_InitStructure);
以上例子设置了中断线line4的中断为下降沿触发。
设置好了中断线和GPIO的映射关系,然后又设置好了中断的触发模式等参数。既然是外部中断,设计到中断我们当然需要设置NVCI的中断优先级。
配置完中断优先级后,接着是编写中断服务函数。中断服务函数名字在MDK中事先有定义。但是不得不提的是,STM32的IO口外部中断只有6个,分别是:
EXPORT
EXT0_IRQHandle EXPORT-----------------------中断线0对应的中断函数
EXT1_IRQHandle EXPORT-----------------------中断线1对应的中断函数
EXT2_IRQHandle EXPORT-----------------------中断线2对应的中断函数
EXT3_IRQHandle EXPORT-----------------------中断线3对应的中断函数
EXT4_IRQHandle EXPORT-----------------------中断线4对应的中断函数
EXT9_5_IRQHandle EXPORT------------------------中断线5-9对应的中断函数
EXT15_10_IRQHandle --------------------------------中断线10-15共用的中断函数
编写中断服务函数经常需要使用两个函数。
第一个是判断某个中断线上的中断是否发生(即标志位是否置位):
ITStatus EXTI_GetITStatus(uint32_t EXTI_line);
//放在中断服务函数开头,监测中断标志位
第二个是清除某个中断线上的中断标志位(即清除标志位):
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);//放在函数的结尾
常用外部中断服务函数的格式:
//格式一
void EXTI3_IRQHandler(void)
{
If( EXTI_GetITStatus(EXTI_Line3)!-=RESET)//判断是否置位
{
Dosomething();//执行中断事件
EXTI_ClearITPendingBit(EXTI_Line3);//清零LINE上标志位
}
}
//=========
您可能关注的文档
最近下载
- 2025年安全工作自查整改情况报告(三篇).docx VIP
- 2026年春学期沪科版初中物理九年级下册教学计划.docx VIP
- 2025年苏州农业职业技术学院单招(语文)测试模拟试卷真题题库.docx VIP
- 新乡市、鹤壁市、安阳市、焦作市2026届高三一模一模数学试卷(含答案详解).pdf
- 《核心素养下小学低段“画数学”的实践研究》课题研究方案.doc
- 2026年春学期沪科版初中物理八年级下册教学计划.docx VIP
- 2025消防员招聘题库及答案.doc VIP
- 施工场地治安保卫管理计划.doc VIP
- 乳牙及年轻恒牙解剖结构与组织结构特点.pptx VIP
- 2026年苏州农业职业技术学院单招职业技能考试题库及答案详解(历年真题).docx VIP
原创力文档

文档评论(0)