PA0,PB0...PG0--->EXTI0

PA1,PB1...PG1--->EXTI1

.......

PA15,PB15...PG15--->EXTI15

以上为GPIO和中断线的映射关系图

STM32实际上只有16个中断线.

每个中断组内,同时只能有一IO口起中断作用.当PA0中断的时候,PB0...PG0都不能起作用....

IO口设置是在EXTIx的函数组内设置.

(这里设置中断的触发模式等初始化参数)

1.选择中断触发EXTIx的线程,比如PE4作为外部中断触发,就要选择 EXTI_InitStructure.EXTI_Line=EXTI_Line4

2.选择是触发中断,......=EXTI_Mode_Interrrupt

3.选择触发模式 下降沿.....=EXTI_Trigger_Falling

4.EXTI线使能.....EXTI_LineCmd=ENABLE

5.最后一步把结构体参数一起写到EXTI寄存器中    EXTI_Init(&EXTI_InitStruture)

下一步要配置中断优先级才能使刚才配置的外部中断生效

1.使能外部中断通道.....=EXTI2_IRQn  //使能按键所在的外部中断通道线 这里是第二个中断线(EXTI2)

2.设置抢占优先级   = 0x02  //抢占优先级2

3.设置子优先级....=0x02  //子优先级2

4.使能外部中断通道   ..... = ENABLE

5.最后一步,还是把刚才设置的结构体参数导入寄存器  NVIC_Init(&NVIC_InitStructure)

这里需要注意到一点

中断线0~4每条线都对应一个中断函数.

5~9共用EXTI9_5_IRQHandler这个中断函数

10~15共用EXTI15_10_IRQHandler这个中断函数

在编写中断服务函数的时候 经常用到两个函数

1.ITStatus EXTI_GetITStatus(uint32_t  EXTI_Line)  //这个函数一般在中断开头判断某个中断线是否发生中断

2.void EXTI_ClearITPendingBIt(uint32_t EXTI_Line)  //这个函数是清除某个中断线上的中断标志位

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

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

具体细节部分阅读原子STM32开发指南上中的外部中断部分.

这里只是手工打印出来以示增强自己的影响.

看到这里的朋友,在STM32的学习路上,坚持下去,在此与诸君共勉!

STM32外部中断初理解的更多相关文章

  1. 转别人的 STM32外部中断使用注意事项

    前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...

  2. STM32外部中断具体解释

      一.基本概念 ARM Coetex-M3内核共支持256个中断,当中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32眼下支持的中断共84个(16个内部+68个外部), ...

  3. STM32 外部中断

    1)STM32一般有19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断.线 16:连接到 PVD 输出. 线 17:连接到 RTC 闹钟事件. 线 18:连接到 USB 唤醒事件. 2) ...

  4. stm32 外部中断学习

    今天我们看看STM32的外部中断实验. STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一 ...

  5. STM32 外部中断详解(原理+配置代码)

    本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...

  6. STM32——外部中断EXIT实现

    外部中断实现步骤: 一.初始化,包括:1.AFIO时钟中断和GPIO时钟使能:                          2.GPIO初始化                           ...

  7. (stm32f103学习总结)—stm32外部中断

    一.外部中断介绍 1.1 EXTI简介 EXTI简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事 件/中断请求的边沿检测器.EXTI的每根输入线都可单独进行配置,以 ...

  8. STM32外部中断.

    void EXTIX_Init(void){     EXTI_InitTypeDef EXTI_InitStructure;    NVIC_InitTypeDef NVIC_InitStructu ...

  9. STM32之外部中断控制

    一.STM32外部中断 1.STM32外部中断结构图 如上图所示:主要包括四个环节,GPIO.AFIO.EXTI.NVIC.以STM32F103VE(100脚)为例说明硬件模块的数量: GPIO:   ...

随机推荐

  1. mysql 唯一约束

    ALTER TABLE user ADD UNIQUE (username,userid) 对表user增加username和userid的唯一约束 ALTER TABLE tablename  AD ...

  2. 【翻译】利用Qt设计师窗体在运行时创建用户界面(Creating a user interface from a Qt Designer form at run-time)

    利用Qt设计师窗体在运行时创建用户界面 我们利用Calculator窗体例子中创建的窗体(Form)来展示当一个应用(application)已经生成后,是可以在其运行时产生与例子中相同的用户界面. ...

  3. linux文件系统,文件的分类

    从硬盘的构造可知,每次对物理磁盘的访问的最小单位是一个盘面上的一个磁道的扇区,即使用户需要读取一个字节的数据,实际读写时都是先把该字节所在的扇区读读入到内存,然后再访问. 1.普通文件 2.目录文件 ...

  4. 使用扫描二维码打开app

    应该不少人遇到过这种需求,扫描二维码打开app如果用户没有这个app则提示它跳转. 用网页直接来调用app是不打可能的,必须原生那边先做一些配置. 首先,安卓和苹果的调用方法是不同的. 所以我们需要先 ...

  5. js获取当前日期

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  6. windows php线程安全和不安全,两个版本我也看不懂,记下来再说。

    Windows下的PHP版本分两种:线程安全版本与非线程安全版本. 要论两者的区别,详细论说起来比较麻烦,从使用者的角度,记住什么时候用哪种版本的区别就可以了吧: 1.windows + IIS + ...

  7. winform右下角弹窗

    网页是否经常在电脑右下角弹窗显示消息?其实Winform也是可以实现的.下面介绍两种方法. 第一步:设计窗体 第二步:实现代码 第一种方法 引用user32 声明常量 窗体Load事件 窗体FormC ...

  8. NotePad++常用快捷键。——Arvin

    Ctrl+单键 Ctrl+C 复制 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+Z 撤消 Ctrl+Y 恢复 Ctrl+A 全选 Ctrl+F 键查找对话框启动 Ctrl+H 查找/替换对话框 ...

  9. nodejs的第三天学习笔记

    一. CommonJS 规范 1.1nodejs 与 commonjs 之间的关系: 1)nodejs是一种服务器语言. a)开启服务的能力 b)文件读写的能力 服务器:就是一台安装了服务软件 2)c ...

  10. MySQL查询分析器EXPLAIN或DESC

    转载:http://chenzehe.iteye.com/blog/1682081 MySQL可以通过EXPLAIN或DESC来查看并分析SQL语句的执行情况,如下需要计算2006年所有公司的销售额, ...