历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2021年10月09日 | STM32 关于外部中断线、中断源和中断服务函数的问题

2021-10-09 来源:eefocus

中断线问题:

上图可以看出,PA0、PB0...PG0共用的EXTI0中断线,PA1、PB1...PG1共用的EXTI1中断线,也就是 编程里面的(如下图库文件),对应16个中断线,后面三个是专用的中断线,不做讨论。

有人要问,假设:我设置的引脚是PB9和PE9都开启外部中断怎么办?小编告诉你,这还真办不了,我实测过。配置函数的时候后覆盖之前的函数的(如下图所示)

如果这样配置的话,会出现出货光电1的初始化覆盖掉编码盘的初始化,说白了就是编码盘的设置被覆盖掉了,结果是外部中断  出货光电1管脚会触发而编码盘就不起作用了,这也是STM32其中一个问题所在吧! 反过来,结果是外部中断  编码盘 管脚会触发 而 出货光电1管脚就不起作用了!


中断源问题:


  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); //设置GPIOX中断源以及哪个中断脚

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;//中断线

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//设置为外部中断模式

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//上升沿触发

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断线使能

  EXTI_Init(&EXTI_InitStructure);//配置使能


中断服务函数:


简单的配置:


void EXTI15_10_IRQHandler(void)//中断服务函数,如果中断线是10-15。

{

if(EXTI_GetITStatus(EXTI_Line10) != RESET) 

{

Beep_ON;SOFT_DELAY; Beep_OFF;

EXTI_ClearITPendingBit(EXTI_Line10);     

}  

if(EXTI_GetITStatus(EXTI_Line11) != RESET) 

{

Beep_ON;SOFT_DELAY; Beep_OFF;

EXTI_ClearITPendingBit(EXTI_Line11);     

}  

if(EXTI_GetITStatus(EXTI_Line12) != RESET) 

{

Beep_ON;SOFT_DELAY;Beep_OFF;

EXTI_ClearITPendingBit(EXTI_Line12);     

}  

 

void EXTI9_5_IRQHandler(void)//中断服务函数,如果中断线是5-9。

{

if(EXTI_GetITStatus(EXTI_Line5) != RESET) 

{

Beep_ON;SOFT_DELAY; Beep_OFF;

EXTI_ClearITPendingBit(EXTI_Line5);     

}  

if(EXTI_GetITStatus(EXTI_Line8) != RESET) 

{

Beep_ON;SOFT_DELAY; Beep_OFF;

EXTI_ClearITPendingBit(EXTI_Line8);     

}  

if(EXTI_GetITStatus(EXTI_Line9) != RESET) 

{

Beep_ON;SOFT_DELAY;Beep_OFF;

EXTI_ClearITPendingBit(EXTI_Line9);     

}  


每个中断服务函数代表一个或者一类,上面的代码说明:只要是中断线在EXTI_Line   10-15 的,中断服务函数就只有一个,但是由于中断线只有唯一性,可以在中断服务函数里面判断到底是哪个中断线触发,这也保证不会误触发或者是占线的一系列的问题。


如上图,外部中断分为几类:如下:


DCD     EXTI0_IRQHandler           ; EXTI Line 0//只是管脚的中断服务函数,还有串口等等中断服务函数

  DCD     EXTI1_IRQHandler           ; EXTI Line 1             

  DCD     EXTI2_IRQHandler           ; EXTI Line 2

  DCD     EXTI3_IRQHandler           ; EXTI Line 3

  DCD     EXTI4_IRQHandler           ; EXTI Line 4

  DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5

  DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10

所以在配置外部中断服务函数或者其他中断服务函数的问题时,参照:库启动件 startup_stm32f10x_hd.s

推荐阅读

史海拾趣

FETek Technology(东沅)公司的发展小趣事

随着公司规模的扩大,东沅开始投入大量资源进行技术研发。经过数年的努力,他们成功开发出了一系列具有竞争力的半导体测试设备和测试程序开发工具。这些产品不仅覆盖了模拟器件、数字器件、混合信号器件和射频器件等多种类型,而且具有高精度、高效率和高可靠性的特点。凭借这些技术优势,东沅逐渐赢得了市场的认可,客户数量不断增加。

大毅科技公司的发展小趣事

作为一家有社会责任感的企业,大毅科技始终关注环境保护和可持续发展。公司积极推行绿色生产理念,采用环保材料和节能技术,减少生产过程中的废弃物排放和能源消耗。同时,大毅科技还积极参与公益事业和社区活动,回馈社会。这些举措不仅体现了公司的社会责任感,也赢得了社会的广泛赞誉。

以上是关于大毅科技在电子行业中的5个发展故事概述。这些故事展示了大毅科技在创立、生产基地拓展、品质认证与国际化、技术创新与研发以及社会责任与可持续发展等方面的努力和成就。

Hengstler GmbH公司的发展小趣事

为了进一步提升产品质量和竞争力,大毅科技积极申请并获得了多项国际品质认证,如ISO9001、ISO14001、TS16949等。这些认证不仅证明了大毅科技在品质管理方面的卓越能力,还为公司打开了通往国际市场的大门。随着认证的不断增多,大毅科技的产品开始出口到全球各地,与索尼、雅马哈等知名企业建立了长期合作关系。

Chemtronics公司的发展小趣事

自1958年成立以来,Chemtronics公司在电子维护和维修领域不断进取。最初,公司专注于生产一系列清洁剂产品,以其高效清洁能力获得了市场的认可。随着时间的推移,Chemtronics逐渐将产品线扩展至超纯溶剂、净化室级别擦拭棒和擦拭布等领域,进而又扩展到电子电气和电信工业的精密返工和维修工具。这一转变不仅体现了公司对市场需求的敏锐洞察,也彰显了其不断创新的精神。

GTE Microcircuits公司的发展小趣事
选择合适的复合放大器需要根据具体应用需求来考虑,包括所需的增益、带宽、噪声系数、电源电压等参数。同时,还需要考虑放大器的封装形式、功耗、以及成本等因素。建议在选择时参考数据手册和应用笔记等资料,并结合实际测试来确定最合适的型号。
胜利(VICTOR)公司的发展小趣事

1968年,胜利公司(VICTOR)在台湾创立,创始人李明怀揣着对羽毛球运动的热爱和对品质的执着,决定进入羽毛球用品制造行业。他带领团队克服技术难关,不断研发新产品,逐渐在市场上崭露头角。

问答坊 | AI 解惑

机器人技术

20世纪50年代,为代替人工从事单调、重复的体力劳动或危险的工作,提高产品质量,工业机器人应运而生。从那以后,机器人作为生产自动化的典型代表,在制造业领域获得了巨大成功。 那么什么是机器人呢?从人们一般的理解来看,机器人是具有一些类似 ...…

查看全部问答>

温度控制器如何接线更合理

数显温度控制器。和一块加热板。 请问直接把加热板接温度控制器上输出端好。还是加装一个中间继电器还来控制加热板? 都不对,温度控制器不能直接控制加热板的。你有两种控制方法,其一温度表控制接触器,接触器再接加热板,其二把接触器改成固态 ...…

查看全部问答>

探讨一下关于symbian智能手机操作系统的技术问题

探讨一下关于symbian智能手机操作系统的技术问题 各位从事symbian 智能手机研发或者从事相关电信领域工作的同弟姐妹们,我从事这方面的工作有相当长 的时间,对这个行业,包括有些技术领域有些困惑,想结识一些有同样背景的朋友们,做一下各方 ...…

查看全部问答>

cofig.bib配置

最近在搞wince方面的开发,看了wince的帮助,对config.bib的配置还是模糊不清的,在这里请教下各位。 下面是我的硬件的config.bib MEMORY IF IMGFLASH !     NK            86100000  ...…

查看全部问答>

请问专家:solomon的GPRS MODEM 发短信不成功

solomon的GPRS MODEM设备用AT指令:AT+CMGS =电话号码信息内容 发送不成功,难道是这个设备的AT指令跟其它设备不一样吗? 请各们专家来帮帮忙…

查看全部问答>

【活跃板块】赠送《Cortex-M3 + μC/OS-II嵌入式系统开发入门与应用》

目录 第1部分 第1章 走进ARM微处理器   1.1 ARM体系结构的源头——ARM公司   1.2 ARM处理器的发展历程   1.3 ARM体系结构    1.3.1 ARM Cortex处理器技术特点    1.3.2 ARM Cortex系列处理器比较   1.4 ARM v7新 ...…

查看全部问答>

转手自用九成新飞凌OK6410开发板

       小弟在此转手飞凌公司生产的ARM11开发板:OK6410,其中CPU是三星公司的S3C6410芯片,256M RAM,2G Flash,4.3英寸的触摸屏。具体的参数可以到飞凌嵌入式官方网站查阅,传送门:http://www.forlinx. ...…

查看全部问答>

UART功能中的接受数据问题:麻烦了。谢谢

在串口通信中,TI例程上的程序是进入休眠状态,一旦接受数据,中断执行命令,但是现在在程序运行过程中,现在想要接收的数据与规定的数据进行比较。但是数据还没有接收,直接就进行比较了。郁闷,求助一下。。谢谢了 例程 程序------》休眠------ ...…

查看全部问答>

【LaunchPad】大学堂汇总贴(更新中)

为了方便大家查阅,对于launchpad大学堂中大家按照提纲发的帖子,我在此汇总在一起,并且持续更新。LaunchPad开发板介绍https://bbs.eeworld.com.cn/viewthread.php?tid=306206&extra=page%3D3%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D66LaunchP ...…

查看全部问答>