单片机
返回首页

STM32外部中断易出错总结

2015-10-09 来源:eefocus

前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark。

一:触发方式

STM32 的外部中断是通过边沿来触发的,不支持电平触发;

二:外部中断分组

STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。

STM32 分组和对应中断处理函数分配:

管脚

中断标志

中断处理函数分配

PA0~PG0

EXTI0

EXTI0_IRQHandler

PA1~PG1

EXTI1

EXTI1_IRQHandler

PA2~PG2

EXTI2

EXTI2_IRQHandler

PA3~PG3

EXTI3

EXTI3_IRQHandler

PA4~PG4

EXTI4

EXTI4_IRQHandler

PA5~PG5

EXTI5

 EXTI9_5_IRQHandler

PA6~PG6

EXTI6

PA7~PG7

EXTI7

PA8~PG8

EXTI8

PA9~PG9

EXTI9

PA10~PG10

EXTI10

EXTI15_10_IRQHandler

PA11~PG11

EXTI11

PA12~PG12

EXTI12

PA13~PG13

EXTI13

PA14~PG14

EXTI14

PA15~PG15

EXTI15

三:外部中断的配置过程

配置触发源 -GPIO

触发源为通过GPIO端口输入,所以,要配置GPIO的模式,输入方式,输入方式有以下几种:

1.GPIO_Mode_AIN ,模拟输入(ADC模拟输入,或者低功耗下省电)

2.GPIO_Mode_IN_FLOATING ,浮空输入

3.GPIO_Mode_IPD 0x28,带下拉输入 

4.GPIO_Mode_IPU 0x48,带上拉输入

引脚与外部中断关联

外部中断AFIO时钟开启

外部中断配置

这个主要是中断线路选择,中断触发方式,中断使能。

中断优先级配置 NVIC

中断处理函数的编写。

四:外部中断函数不能进入的原因分析

结合我工作中的遇到的问题可以分为:

1)GPIO或者AFIO的时钟没有开启;

2)GPIO和配置的中断线路不匹配;

3)中断触发方式和实际不相符合;

4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线;

5)外部中断是沿触发,有可能不能检测到沿,比如 中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平;

6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;,因为软件中断先于边沿中断处理。

我的问题出现在没有启动AFIO时钟信号;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);导致总也进不了中断

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 光控音效发生器电路

  • 如何利用ESP8266制作一个简单的四轴飞行器

  • 优化电路板布局的简单方法

  • 如何使用LED驱动器LM3915制作振动计

  • 电谐波图形均衡器示意图

    相关电子头条文章