STM32中断总结

STM32的19个中断为:

  1. 线0~15:对应外部IO口的输入中断
  2. 线16:连接到PVD输出
  3. 线17:连接到RTC闹钟事件
  4. 线18:连接到USB唤醒事件

配置 GPIO 与中断线的映射关系的函数:

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
例如:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

中断初始化:

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); //根据 EXTI_InitStruct 中指定的
//参数初始化外设 EXTI 寄存器

以上中断结构体的成员说明:
EXTI_Line:中断线标号,取值范围为__EXTI_Line0~EXTI_Line15__;
EXTI_Mode:中断模式,取值为__EXTI_Mode_Interrupt__(中断)或__EXTI_Mode_Event__(事件);
EXTI_Trigger:触发方式,取值为__EXTI_Trigger_Falling__(下降沿)、EXTI_Trigger_Rising(上升沿)或__EXTI_Trigger_Rising_Falling__(任意电平);
EXTI_LineCmd:使能中断,取值__ENABLE__;
##  6 个 STM32 IO 口外部中断函数:

EXPORT EXTI0_IRQHandler
EXPORT EXTI1_IRQHandler
EXPORT EXTI2_IRQHandler
EXPORT EXTI3_IRQHandler
EXPORT EXTI4_IRQHandler
EXPORT EXTI9_5_IRQHandler  //5~9 共用中断函数
EXPORT EXTI15_10_IRQHandle  //10~15 共用中断函数

编写中断常使用到两个函数:

  1. 判断某个中断线上的中断是否发生:
    ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
  2. 清除某个中断线上的中断标志位: 
    void EXTI_ClearITPendingBit(uint32_t EXTI_Line);

常用的中断服务函数格式为:

void EXTI3_IRQHandler(void)
{
 if(EXTI_GetITStatus(EXTI_Line3)!=RESET)//判断某个线上的中断是否发生
 {
  中断逻辑…
  EXTI_ClearITPendingBit(EXTI_Line3); //清除 LINE 上的中断标志位
 }
}

使用 IO 口外部中断的一般步骤:

  1. 初始化IO口为输入;
  2. 开启AFIO时钟;
  3. 设置IO口与中断线的映射关系;
  4. 初始化线上中断,设置触发条件等;
  5. 配置中断分组(NVIC),并使能中断;
  6. 编写中断服务函数;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值