STM32F4中断总结

  • STM32F4的每个IO口均可作为外部中断输入;

     

  • 外部中断线EXTI只有0~15对应外部IO口的输入中断(对应关系为GPIOX.0映射到EXTI0,例如:GPIOF.0映射到EXTI0),EXTI线16~22均连接到其他唯一的事件;

     

  • 对于每个中断线我们可以设置相应的触发方式:上升沿,下降沿,边沿触发,并且可以设置每个中断线的使能;

     

  • 外部中断的一般配置步骤:
  1. 使能SYSCFG时钟(只要我们使用到外部中断,就必须打开SYSCFG时钟,因为要用到相关寄存器如配置GPIO与中断线的映射关系);(APB2上)
  2. 设置IO口与中断线的映射关系,SYSCFG_EXTILineConfig();
  3. 初始化线上中断,设置触发条件等,EXTI_Init();
  4. 配置中断分组(NVIC),并使能中断,NVIC_Init();
  5. 编写中断服务函数,EXTIX_IRQHandler()(STM32只能使用7个中断服务函数,0~4都是单独的中断服务函数如EXTI3_IRQHandler(),而5~9共用一个中断服务函数,10~15共用一个如EXTI15_10_IRQHandler(),STM32所有中断服务函数的名字都已经在startup_stm32f40_41xx.s里面定义好了
  • 外部中断其它常用函数

        EXTI_GetITStatus();判断中断线中断状态,是否发生

        EXTI_ClearITPendingBit();清除中断线上的中断标志位

  • 一般相应GPIO初始化及时钟使能在触发中断的函数中已经编写好,故不在中断配置中再进行配置,将封装好的触发函数写入中断配置中即可,如用按键来触发中断,全部按键相关函数在key()编写好,然后再中断配置中引入key()

  • 常用的中断服务函数格式

 void EXTI3_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line3)!=RESET) //判断某个线上的中断是否发生

{

中断逻辑

}

EXTI_ClearITPendingBit(EXTI_Line3);//清除Line线上的中断标志位

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4中,要使用定时器中断,需要进行以下几个步骤: 1. 首先,需要在库文件stm32f4xx_hal_tim.h和stm32f4xx_hal_tim.c中调用相应的库函数来配置定时器。具体的配置步骤可以参考\[1\]中的描述。 2. 在配置完成后,可以使用宏定义__HAL_TIM_ENABLE_IT来使能定时器的更新中断,使用__HAL_TIM_DISABLE_IT来关闭定时器的更新中断。例如,使用__HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE)来使能指定定时器的更新中断,使用__HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE)来关闭指定定时器的更新中断。同样,可以使用__HAL_TIM_ENABLE和__HAL_TIM_DISABLE来使能和关闭定时器本身。 3. 在中断服务函数中,可以编写相应的代码来处理定时器中断。例如,可以在中断服务函数中翻转DS1的电平来指示定时器中断的产生。 总结起来,要在STM32F4中使用定时器中断,需要进行定时器的配置,使能定时器的更新中断,并在中断服务函数中处理相应的操作。具体的配置步骤和代码实现可以参考\[1\]和\[2\]中的描述。 #### 引用[.reference_title] - *1* *2* *3* [STM32F4 | 定时器中断实验](https://blog.csdn.net/F4_Family/article/details/128342972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值