STM32外部中断初理解
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外部中断初理解的更多相关文章
- 转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...
- STM32外部中断具体解释
一.基本概念 ARM Coetex-M3内核共支持256个中断,当中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32眼下支持的中断共84个(16个内部+68个外部), ...
- STM32 外部中断
1)STM32一般有19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断.线 16:连接到 PVD 输出. 线 17:连接到 RTC 闹钟事件. 线 18:连接到 USB 唤醒事件. 2) ...
- stm32 外部中断学习
今天我们看看STM32的外部中断实验. STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一 ...
- STM32 外部中断详解(原理+配置代码)
本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...
- STM32——外部中断EXIT实现
外部中断实现步骤: 一.初始化,包括:1.AFIO时钟中断和GPIO时钟使能: 2.GPIO初始化 ...
- (stm32f103学习总结)—stm32外部中断
一.外部中断介绍 1.1 EXTI简介 EXTI简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事 件/中断请求的边沿检测器.EXTI的每根输入线都可单独进行配置,以 ...
- STM32外部中断.
void EXTIX_Init(void){ EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructu ...
- STM32之外部中断控制
一.STM32外部中断 1.STM32外部中断结构图 如上图所示:主要包括四个环节,GPIO.AFIO.EXTI.NVIC.以STM32F103VE(100脚)为例说明硬件模块的数量: GPIO: ...
随机推荐
- 渗透杂记-2013-07-13 关于SMB版本的扫描
smb2的溢出,其实在metasploit里面有两个扫描器可以用,效果都差不多,只是一个判断的更加详细,一个只是粗略的判断. Welcome to the Metasploit Web Console ...
- 关于node.js杂记
https://gitlore.com/page/gitlore-git/nodejs/index.html[node.js中文文档] ////// https://gitlore.com/in ...
- Latex引用插图格式制定问题(1)
自定义新命令\reffig如下:\newcommand{\reffig}[1]{Figure \ref{#1}}在需要引用图片的时候,用\reffig代替\ref,就可以自动在图号前面输出" ...
- Jquery实现图片轮换效果
最近在看jquery书时,看到一个比较有趣的东西:图片轮换.这里和大家分享下我看完后写的一个demo.实现图片轮换要完成三部分模块:html部分.css部分.jqury部分.下面分步详细说明.1.ht ...
- 两行代码搞定 JavaScript 的日期验证
我们通常在 JavaScript 中验证日期,基本的思路大概是,先判断年月日是否有效,再判断当月是否有当日,比如一些月份没有 31 日,平年二月没有 29.30 日,闰年二月没有 30 日等等. 偶然 ...
- python走起之第十三话
前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中 ...
- PHP中的逻辑运算符的优先级
在三元运算中(expr1)?(expr2):(expr3); and,or,xor的优先级要小于三元运算符,所以需要添加括号例:如果$a为true,$b为fals,$a and $b?"tr ...
- 数据格式json讲解
JSON 在使用名称/值对或XML时,实际上是使用javascript从应用程序中取得数据并将数据转换成另一种数据格式.javascript不仅作为格式化语言使用,还可以使用javascript语言中 ...
- GitHub 用到的英语
1.Github首页Pull requests Issues Gist请求 问题 要点Learn Git and GitHub without any code!没有任何代码学习Git和GitHu ...
- 【Fiddler】改写返回数据功能
方法一:打断点 1.在手机上设置好代理后,随便进入一个APP:之后选择Rules->Automatic Breakpoints->After Responses,在返回值处打断点 2.重新 ...