STM32外部中断易出错总结

发布者:自由探索最新更新时间:2015-10-09 来源: eefocus关键字: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

三:外部中断的配置过程

配置触发源 -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);导致总也进不了中断

关键字:STM32  外部中断  易出错总结 引用地址:STM32外部中断易出错总结

上一篇:STM32中assert_param()的使用
下一篇:stm32单步调试,出现*** error 65: access violation at 0x40023

推荐阅读最新更新时间:2024-03-16 14:34

STM32学习三之时钟树分析
上一章我们已经将STM32的开发环境搭建成功了,那么接下来我们就可以开始进行实际操作了。在进行实际操作之前我们需要提前准备好一些资料文档,这些资料文档大家可以在我的百度网盘 https://pan.baidu.com/s/1BejuAkvtU5KKlJEo3HAXMA 提取码:dfs6 中进行下载。 很多同学在学习单片机的时候都有遇到过一个东西,那就是晶振。其实这个所谓的晶振全名叫做晶体振荡器,其作用是用于产生原始的时钟频率,晶振产生的频率经过频率发生器的放大或缩小后就成了计算机中各种不同的总线频率 ,用于计算机中各个不同的外设工作,常用晶振的模样如下图所示: 一、什么是时钟频率 计算机是一个由各种集成电路和电子器件组成,
[单片机]
<font color='red'>STM32</font>学习三之时钟树分析
基于STM32 MCU的太阳能:LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED工作时间等功能。 系统
[单片机]
基于<font color='red'>STM32</font> MCU的太阳能:LED街灯解决方案
stm32利用mqtt与小程序通信
本项目实现的功能如下:通过stm32连接esp8266,然后利用mqtt协议连接到服务器,同时小程序端也连接到服务器,通过订阅和发布主题来使得这两个客户端能进行数据的传输。 stm32连接服务器端 本章所用到的器件如下: STM32F103ZET6最小系统板 ESP8266-01S模块 USB转microUSB数据线 四根杜邦线 连接如下: 32板3.3v----------- ESP8266的3.3v 32板GND---------- ESP8266的GND 32板的PC10-------- ESP8266的RX 32板的PC11-------- ESP8266的TX 在这里说明一下,由于本项目是用在其他项目上的,所以在
[单片机]
<font color='red'>stm32</font>利用mqtt与小程序通信
使用STM32定时器PWM功能时的小问题
有人使用STM32定时器的PWM功能,遇到点小疑问,这里一起看看。 他先将STM32某定时器计数周期设为0xff,单向递增计数模式,OC比较值设为0x7F。在某时刻将新的计数周期0x7F与比较值0x3F加载到影子寄存器。当正在进行的一个周期结束后,经示波器测量确实可以看到其下一个周期发生变化,但其周期明显与预设值对应不上!再次经过一个周期,定时器才会按照预设值稳定输出。 以上是咨询者不算很清晰的描述【其实咨询TIMER问题最好配上时序图】,但可以了解到他要做的事情就是在ARR=0xff,ccr=0x7F的PWM输出状态下,于某时刻赋予ARR和CCR新值以改变输出波形。 事情不算复杂,疑点就是为什么需要2个周期延时后才能有基
[单片机]
使用<font color='red'>STM32</font>定时器PWM功能时的小问题
STM32标准外设库SPL转换成Cube LL
今天分享几点内容: 1.介绍ST推出的三种库; 2.直接操作寄存器及三种ST库的代码性能对比; 3.STM32CubeMX直接生成Cube LL库函数的方法; 4.STM32标准外设库SPL转换成Cube LL的方法; 1介绍ST推出的三种库 1.标准外设库:Standard Peripheral Libraries,简写SPL. 2.Cube硬件抽象层库:STM32Cube Hardware Abstraction Layer,简写Cube HAL. 3.Cube底层库:STM32Cube Low-Layer,简写Cube LL. 开发STM32常见的除了直接读写(操作)寄存器之外,就是使用ST推
[单片机]
<font color='red'>STM32</font>标准外设库SPL转换成Cube LL
STM32的理解
现谈一点单片机的简单知识及STM32相比于其他单片机的优势。单片机最小系统需要有晶振电路,复位电路,电源供电以及接地,简单来说单片机就是通过芯片来控制外围电路的一个微型控制器。相比较于Arduino,AVR,K60,STM32拥有更丰富的外设,这就意味着它有更强大的功能,完成更多的实验。同时STM32拥有更快的图像采集速度。再来随便讲一些有关单片机的简单知识:晶振——一个用于给整个单片机计时的元器件,同时STM32其他部位上还有一些时钟,用于控制该部分是否工作。一些其他程序:看门狗——用于检测程序的运行是否正常,在自己的程序“跑飞”的时候能够及时将程序复位。中断——在自己的程序运行的时候突然有另一个程序介入,自己的程序中断,运行介
[单片机]
一款DAC模块(TLV5608&TLV5610)STM32源程序
高精度DAC转换模块,可用于DIY程控电源,程序可直接使用(TLV5608)。如使用TLV5610,请自行阅读IC资料,做微小更改。 单片机源程序如下: #include stdio.h #include string.h #include stm32f10x.h #include stm32f10x_it.h #include io.h //#include key.h #include delay.h //#include timer.h #include usart.h #include adc.h //#include 24cxx.h //#include menu.h #include
[单片机]
STM32系统中如何数据掉电保护
在嵌入式设备开发中,往往需要保存一些掉电不易失性的数据,如果系统配置、用户定制信息等等,如果增加额外的ROM IC,比如(基于I2C的24C02等等)往往会造成额外的PCB空间增大,硬件成本增加,降低产品的性价比。如果单从实用性来讲,在stm32的系统中,诸如此类的应用,笔者推荐如下2个方法可以去尝试和借鉴。 基于备份寄存器 原理:对于大容量的MCU系列来说,它有着42个16bit的备份寄存器,而中小容量的微处理器却只有10个16bit的备份寄存器。以STM32F103C8T6为例,42个备份寄存器的地址偏移为:0x04~0x28,0x40~0xBC,共可以存储84个byte数据。备份寄存器是依赖者备份电源的,当外界的VDD掉
[单片机]
<font color='red'>STM32</font>系统中如何数据掉电保护
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved