外部中断控制:

STM32的每个IO 都可以作为外部中断的中断输入口,这点也是STM32的强大之处。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19个外部中断为:
    线0~15:对应外部IO 口的输入中断。
    线16:连接到PVD输出。
    线17:连接到RTC闹钟事件。
    线18:连接到USB唤醒事件。

STM32供IO 口使用的中断线只有16个,但是STM32的IO 口却远远不止16个,STM32就这样设计,GPIO的管教GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线15~0。这样每个中断线对应了最多7个IO 口,以线0为例:它对应了GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0。而中断线每次只能连接到1个IO 口上,这样就需要通过配置来决定对应的中断线配置到哪个GPIO上了。

AFIO(alternate-function I/O),指GPIO端口的复用功能,GPIO除了用作普通的输入输出(主功能),还可以作为片上外设的复用输入输出,如串口、ADC、这些就是复用功能。大多数GPIO都有一个默认复用功能,有的GPIO还有重映射功能,重映射功能是指把原来属于A引脚的默认复用功能,转移到了B引脚进行使用,前提是B引脚具有这个重映射功能。当把GPIO用作EXTI外部中断或使用重映射功能的时候,必须开启AFIO时钟,而使用默认复用功能的时候,就不必开启AFIO时钟了。

主要步骤:1、使能EXTIx线的时钟和第二功能AFIO时钟

2、配置EXTIx先得中断优先级

      3、配置EXTI中断线IO

4、选定要配置为EXTI的IO口线和IO口的工作模式

      5、EXTI中短线工作模式配置

另外:NVIC_PriorityGroupConfig()库函数,把NVIC中的中断优先级分组设置;然后再向NVIC初始化结构体写入参数。NVIC_IRQChannel=EXTI9_5_IRQn,表示要配置的为EXTI第5-9线的中断向量。这些写入的参数在stm32f10x.h文件的IRQn类型定义中查到。

中短线0-4每个中断线对应一个中断函数,中断线5-9共用中断函数EXTI9_5_IRQHandler,中断线10-15共用中断函数EXTI15-10-IRQHandler。在编写中断服务函数的时候会经常使用到两个函数,第一个函数是判断某个中断线上的中断是否发生(标志位是否置位):
      ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
这个函数一般使用在中断服务函数的开头判断中断是否发生。另一个函数是清除某个中断线上的中断标志位:
      void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
这个函数一般应用在中断服务函数结束之前,清除中断标志位

STM32笔记记录2相关推荐

  1. 关于NB-IOT模块链接阿里物联网平台的学习笔记-记录

    关于NB-IOT模块链接阿里物联网平台思路的学习笔记-记录 叙述 调试思路总结 调试过程 AT命令-方式一 AT命令-方式二 AT命令-方式三 软件 关于遇到问题 总结 叙述 前一段是写了一篇&quo ...

  2. linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录

    一.首先搭建好Linux环境,我这边使用的是redhat enterprise 6.5,并且建议磁盘划分逻辑卷,以便后期的扩容工作. 二.环境搭建好了之后,我们就要去准备MySQL的安装文件,到现在为 ...

  3. mysql 5.6.37 winx64_Mysql 5.6.37 winx64安装双版本mysql笔记记录

    机器上现在已经存在5.0版本Mysql的情况下,继续安装一个最新版的mysql. 一.官网下载免安装压缩包. 本人下载的是mysql-5.6.37-winx64.zip.将压缩包解压到自定义目录中.例 ...

  4. 今天研究 Client本来是关联的Expression接口,笔记记录一下。

    (很抱歉,由于博客图片审核功能尚未完成,普通用户暂时关闭引用站外图片功能,请您谅解,我们会尽快开放.)    针对这个类图,LZ简单的说两点.<p>                 1.C ...

  5. Activiti 学习笔记记录(2016-8-31)

    上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件 转载于:https://ww ...

  6. 一起初学java,笔记记录的第五天:数组、排序和查找

    一起初学java,笔记记录的第五天:数组.排序和查找 适用于初学java者 这个首先指出本文中图片和资源来自**韩顺平**老师,感谢老师做的无私奉献的教学! 1. 数组介绍 数组可以存放多个同一类型的 ...

  7. 笔记记录软件:NoteRecorder

    利用SQLite数据库做了个笔记记录软件,加上搜索功能,方便自己记录东西所用.下载地址 (请在安装了.net framework 3.0/3.5的机器上运行,win7默认已安装该运行时) 参考资料: ...

  8. 【STM32笔记】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题)

    [STM32笔记]HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒.串口唤醒和回调无法一起使用.接收数据不全的问题) [STM32笔记]低功耗模式配置及避坑汇总 前文: blog.csd ...

  9. 【STM32笔记】低功耗模式配置及避坑汇总

    [STM32笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [STM32 ...

  10. 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)

    [STM32笔记]HAL库低功耗模式配置(ADC唤醒无法使用.低功耗模式无法烧录解决方案) [STM32笔记]低功耗模式配置及避坑汇总 一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需 ...

最新文章

  1. mysql非聚集索引区间查询_mysql的聚集索引和非聚集索引,回表查询,索引覆盖,最左前缀原则略解...
  2. 百战百胜:人生10个成功秘诀
  3. 用户home目录下的.gitconfig 和 库文件夹目录下的 .gitignore 示例
  4. create-react-app 脚手架构建项目,搬砖过程中持续总结心得
  5. GitHub 项目 增加成员
  6. socket 通信关于bind那点事
  7. React中解决样式丢失问题
  8. HYSBZ - 1101——莫比乌斯反演
  9. c语言中int的取值范围_c语言入门(1)
  10. ArrayList如何实现增删元素及其缺陷
  11. Chrome 强制显示最小字体为 12px的解决方法
  12. 使用Beyond Compare一类文件目录比较器时,要注意忽略的目录文件设置
  13. systemVerilog的typedef用法
  14. 通达信画线文件是在服务器吗,通达信画线工具的使用说明★★★★
  15. ESP8266-Arduino编程实例-SHT20温湿度传感器驱动
  16. 算法笔记方法论4 枚举法 详细笔记
  17. 手机屏幕材质详解(TFT,TPS,OLED,AMOLED等)
  18. iOS监听模式系列之本地通知Notification
  19. C++方式实现餐饮管理系统
  20. layui中table表格内容过多自动换行

热门文章

  1. eclipse 闪退原因
  2. hdu 1423(LCS+LIS)
  3. C# Invoke 使用 异步委托
  4. .net System.IO之Stream的使用详解
  5. hdu 2142 Can you find it?
  6. 配置sysklogd 接收远程系統日志
  7. (学习日记)裘宗燕:C/C++ 语言中的表达式求值
  8. lamp 测试mysql_搭建LAMP测试环境
  9. iphone 内部函数使用 (函数可能无法响应的部分解决方案)
  10. Kali 更新失败 签名无效