历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2018年12月03日 | STM32 关于外部中断线、中断源和中断服务函数的问题

2018-12-03 来源:eefocus

中断线问题:



上图可以看出,PA0、PB0...PG0共用的EXTI0中断线,PA1、PB2...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.


推荐阅读

史海拾趣

BLT Circuit Services公司的发展小趣事

品质一直是BLT Circuit Services公司的核心竞争力。公司注重品质管理,建立了严格的质量控制体系,从原材料采购到生产过程中的每一个环节都进行严格把关。正是这种对品质的执着追求,使得BLT Circuit Services的产品在行业内赢得了良好的口碑,为公司赢得了大量的忠实客户。

ADLINK公司的发展小趣事

BLT Circuit Services公司深知人才是企业发展的根本。因此,公司注重人才培养和引进,建立了一套完善的人才培训体系。公司不仅为员工提供系统的职业技能培训,还鼓励员工参与各种行业交流活动,提升个人综合素质。这些举措不仅提高了员工的技能水平,也为公司的长期发展提供了有力的人才保障。

BILIN公司的发展小趣事

随着公司实力的不断增强,BLT Circuit Services开始积极拓展国内外市场。公司积极参加各类行业展会,与国内外同行进行深入交流与合作,不断提升公司的知名度和影响力。同时,公司还根据市场需求调整产品策略,推出了一系列符合市场需求的新产品,进一步扩大了市场份额。

CONTTEK Group GmbH公司的发展小趣事

CONTTEK Group GmbH公司的创立,标志着电子行业内一颗璀璨的新星开始崭露头角。公司在创立初期,便凭借对市场的敏锐洞察力和对技术的深刻理解,确立了在电子连接器领域的专业地位。通过引进先进的生产设备和技术人才,公司成功开发出了一系列高质量、高性能的连接器产品,并逐渐在市场中获得了认可。

FOTEK公司的发展小趣事

面对数字化时代的到来,福禄克积极拥抱变革,推动企业的数字化转型。公司不仅升级了内部管理系统,实现了生产、销售、服务等各个环节的数字化协同,还推出了多款基于大数据和人工智能技术的智能测试工具。这些智能工具不仅提高了测试效率和准确性,还为用户提供了更加便捷和个性化的服务体验。福禄克的数字化转型战略不仅增强了其市场竞争力,还为整个电子行业的数字化转型树立了标杆。

BUSSMANN公司的发展小趣事

随着全球经济的不断融合和发展,Bussmann公司也开始了其全球化战略。公司在全球范围内设立生产基地和研发中心,吸引和培养了大量的优秀人才。同时,公司也加大了对新技术和新产品的研发投入,不断推出具有竞争力的新产品。在全球市场上,Cooper Bussmann的电路保护方案广泛应用于各行各业,并获得了UL、CE、CSA等认证机构的认可。

这些故事展示了BUSSMANN公司在电子行业中的发展历程和取得的成就。从创业初期的艰辛与坚持,到汽车熔断器的崛起,再到库柏工业的收购与融合,以及芯片保险丝的创新突破和全球化战略的实施,BUSSMANN公司始终秉持着创新、质量和服务的理念,不断推动电子行业的发展和进步。

请注意,以上故事是基于BUSSMANN公司的历史和发展情况创作的,具体细节可能并不完全准确。如需了解更多关于BUSSMANN公司的信息,建议查阅相关的历史资料或访问其官方网站。

问答坊 | AI 解惑

各位大哥,请帮我看看这个 IC 卡(SLE4442卡)问题啊?谢谢

1: 向 IC 卡里写数据 是不是必须通过效验了才能写啊? 2: 效验 到底是效验什么东西? 是密码,还是? 3: 假设有人自己做个写卡器, 想卡里写个很大的数据, 然后做到您的读卡器里读 这样,就不行了 怎么防止这样的情况啊 是不是在卡里 ...…

查看全部问答>

keil4使用

请问大家在c51编程软件keil4中怎样建一个好的工程???…

查看全部问答>

基于MSP430 的触摸按键2

继续上一个帖子的内容。主要讲基于MSP430构建触摸按键的方式。大家有什么建议意见都可以说,纯交流学习…

查看全部问答>

430用什么软件开发

ccs支持64位的系统吗…

查看全部问答>

BOOSTXL-SENSHUB这个比较适合diy

http://www.ti.com.cn/tool/cn/boostxl-senshub …

查看全部问答>

加速度传感器自身坐标系原点的确定

加速度传感器自身坐标系的坐标原点如何确定。…

查看全部问答>

一本老菜鸟的宝贝

我有幸参加了10月14日在中关村皇冠假日酒店举办的#2013 TI MSP430 Day#研讨会,在会上半价购买了一本《MCU工程师炼成记:我和MSP430单片机》,这本书对于我们这些中老年的菜鸟来说真是通俗易懂,由于我们英语水平较差,读懂说明书原文难度较大,《M ...…

查看全部问答>

mos管驱动问题

本帖最后由 powered 于 2015-1-24 19:33 编辑 驱动电路为运算放大器,驱动信号产生的为+12v ,_15V的方波,但是一加到mos管上,电压就降到5v左右,不知道为什么,麻烦知道的帮忙看看吧…

查看全部问答>

LINUX 下获取IP地址、MAC地址和广播地址、子网掩码等信息

本帖最后由 37°男人 于 2015-7-14 12:24 编辑 在linux 下面通过C语言来获取 平台的 ip、mac、boardcast addr 、 network mask等信息; 建立 socket 网络接口,通过ioctl 来获取 网络参数信息。 参考代码如下: /*   Copyright (C) 2 ...…

查看全部问答>