转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个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 |
三:外部中断的配置过程
l 配置触发源 -GPIO
触发源为通过GPIO端口输入,所以,要配置GPIO的模式,输入方式,输入方式有以下几种:
1.GPIO_Mode_AIN ,模拟输入(ADC模拟输入,或者低功耗下省电)
2.GPIO_Mode_IN_FLOATING ,浮空输入
3.GPIO_Mode_IPD = 0x28,带下拉输入
4.GPIO_Mode_IPU = 0x48,带上拉输入
l 引脚与外部中断关联
l 外部中断AFIO时钟开启
l 外部中断配置
这个主要是中断线路选择,中断触发方式,中断使能。
l 中断优先级配置 NVIC
l 中断处理函数的编写。
四:外部中断函数不能进入的原因分析
结合我工作中的遇到的问题可以分为:
1)GPIO或者AFIO的时钟没有开启;
2)GPIO和配置的中断线路不匹配;
3)中断触发方式和实际不相符合;
4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线;
5)外部中断是沿触发,有可能不能检测到沿,比如 中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平;
6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;,因为软件中断先于边沿中断处理。
转别人的 STM32外部中断使用注意事项的更多相关文章
- STM32外部中断初理解
PA0,PB0...PG0--->EXTI0 PA1,PB1...PG1--->EXTI1 ....... PA15,PB15...PG15--->EXTI15 以上为GPIO和中断 ...
- 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: ...
随机推荐
- ContentProvider跨进程共享数据
借用ContentResolver类访问ContentProvider中共享的数据.通过getContentResolver()方法获得该类的实例. ContentResolver中的方法:inser ...
- 7. Swift 基于Xmpp和openfire实现一个简单的登录注册
1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...
- InfoCube信息立方体的优化
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Linux系统下配置JDK环境变量
刚申请了阿里云,平时很少接触Linux,特此记录一下Linux系统下安装JDK的步骤. 1.进入usr:cd /usr: 2.创建java文件夹:mkdir java: 3.将下载好的文件拷贝至jav ...
- 用SignalR实现实时查看WebAPI请求日志
实现的原理比较直接,定义一个MessageHandler记录WebAPI的请求记录,然后将这些请求日志推送到客户端,客户端就是一个查看日志的页面,实时将请求日志展示在页面中. 这个例子的目的是演示如何 ...
- 你的指纹还安全吗? - BlackHat 2015 黑帽大会总结 day 2
你的指纹还安全吗? 0x03 FINGERPRINTS ON MOBILE DEVICES: ABUSING AND LEAKING speaker是来自FireEye的Wei Tao和Zhang ...
- MVC 使用 Ueditor富文本编辑器
一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...
- ios回调函数的标准实现:protocol+delegate
一.项目结构
- 整合TabBarController与NavigationController
一.项目结构 一开始创建一个空的项目
- Python之路 day3 全局变量、局部变量
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 全局与局部变量 在子程序中定义的变量称为局部变 ...