历史上的今天
返回首页

历史上的今天

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

正在发生

2019年09月11日 | STM32Cube-EXTI

2019-09-11 来源:eefocus

这一章用上一章GPIO的工程修改。复制GPIO的工程,修改文件夹名。点击xxxx.ioc打开STM32cubeMX的工程文件重新配置。PA0管脚重新配置为GPIO_EXIT0模式。

WAKEUP按键已经外部下拉,按下是PA0为高电平。在GPIO配置中配置PA0为上升沿触发。内部下拉,添加用户标签WAKEUP。

 

在NVIC(嵌套向量中断控制器)中,勾选EXIT Line0 interrupt使能PA0中断。右边两个选项设置抢占优先级和响应优先级。此处我们选择默认的,不修改。

在这里简单介绍一下NVIC(嵌套向量中断控制器)。NVIC就是控制中断响应的。主要由三个参数,一个是中断使能,一个是抢占优先级,还有一个就是响应优先级。(优先级数值越小,优先级别越高)


中断使能很好理解,就是是否开启中断,如果开启中断,则满足中断触发条件时程序会跳到中断服务程序运行,否则不响应中断主程序继续运行。


抢占优先级是用来判断一个中断是否可以打断另外一个中断的中断服务程序抢先运行。例如A中断触发,正在运行A中断的服务程序,此时B中断也触发,如果B中断的抢占优先级比A的高,则程序会打断A的中断服务程序,去运行B的中断服务程序,即中断嵌套。等B的中断服务程序运行完后继续运行A的中断服务程序。如果B的抢占优先级没有高过A的抢占优先级,则程序不会打断A的中断服务程序,而是待定A的中断服务程序运行完成后才运行B的中断服务程序。


响应优先级是用来判断抢占优先级相同的几个中断那个中断会优先响应。如果几个抢占优先相同的中断同时触发,那么响应优先级高的最先运行。


判断中断的优先级,先看抢占优先级,抢占优先级高的中断优先级别高。抢占优先级相同的情况下,响应优先高的中断优先级别高。抢占优先级和响应优先级相同的情况下,更加中断向量表确定。


在这里简单讲解一下优先级分组。STM32以4个比特位表示中断的抢占优先级和响应优先级。中断优先级分组是为了给抢占式优先级和响应优先级在中断优先级寄丛器的四个比特位分配各个优先级数字所占的位数。例如3位用于抢占优先级(优先级有2^3=8种优先级),1位用于响应优先级(优先级有2^1=2种优先级)。

在这里我们就配置好stm32CubeMX工程,重新生成报告,以及重新生成代码,编译程序。

打开main.c文件。把main()函数里while循环上一章的代码删掉,while循环里面为空。在main.c文件后面USER CODE BEGIN 4 和 USER CODE END 4 中间添加中断回调函数。

 

中断函数里面先判断是否为EXIT线0中断,如果是则LED2的状态翻转。在STM32F1的数据手册中可以找到下面这张图。PA0为EXTI线0中断。

 

重新编译程序,编译通过后下载到开发板。如果没有错误,按下一下WAKEUP按键LED2的状态改变一次。

下面简单讲解一下中断程序的运行流程。首先main函数主程序中一直在while循环里面执行。当按键(PA0引脚)按下时,边沿检测电路检测到上升沿,触发中断,设置中断标识位。NVIC中断控制器判断EXTI0中断优先是否为最高,若为最高优先级则执行EXIT0中断。


 

再执行中断服务函数之前,内核先将现在使用到的寄存器和主程序中断点的地址压入堆栈(保护现场)。然后程序在中断向量表中找到EXTI0中断对应的地址(0x0000 0058)。这个地址存储的为EXTI0中断服务函数的口人地址。然后程序转跳到中断服务函数执行。

 

在startup_stm32f103xe.s启动文件中,我们可以找到中断向量表。

在stm32f1xx_it.c中断服务函数文件中,我们可以找到EXTI0中断的服务函数。

中断服务函数里面就调用了GPIO外部中断处理函数HAL_GPIO_EXTI_IRQHandler(),参数为GPIO_PIN_0,即EXTI0中断。GPIO外部中断处理函数主要就是清除中断标识位,然后调用中断回调函数HAL_GPIO_EXTI_Callback()。我们只需重构中断回调函数,在函数里面添加我们的应用代码即可(程序中为翻转LED2状态)。

执行完中断服务函数后。内核从堆栈去除压入的寄存器数据恢复现场,取出主程序中断点的地址,转到到主程序中断点的地址继续运行主程序。


到这里就完成一次中断服务。简单的来说,触发中断时,硬件先标识中断标识位,然后NVIC中断控制器判断中断优先级是否可以执行此中断。执行中断时,先保护现在程序的状态,将数据保存进堆栈中,执行完中断服务函数后,再在堆栈中取数据回复现场,跳回主程序继续运行。如果在中断服务函数中有更高优先级的中断触发,则也会将现在的数据保存去执行更高优先级的中断服务函数,即中断嵌套。高优先级的中断执行完后,恢复现场,继续执行低优先级的服务函数。


推荐阅读

史海拾趣

Henkel公司的发展小趣事

HellermannTyton公司在电子行业的发展历程中,积累了丰富的经验和成就,以下是五个与其发展相关的事实性故事:

1. 创立与初期发展

HellermannTyton的起点可以追溯到其成立之初。作为一家专注于紧固、连接、布线、保护和标识解决方案的全球制造商,HellermannTyton在创立时就明确了其市场定位和技术方向。公司凭借其创新的产品和优质的服务,在电子行业迅速站稳脚跟。初期,公司通过不断研发和改进产品,满足了市场对高品质电子配件的需求,逐步建立起稳定的客户群体和市场基础。

2. 全球化布局与扩张

随着业务的不断发展,HellermannTyton开始实施全球化战略。公司在全球范围内设立办事处和生产基地,以更好地服务全球客户。这一战略不仅提升了公司的市场影响力,还促进了产品的国际化销售。目前,HellermannTyton在30多个国家设有办事处,并拥有稳定的财务状况和良好的行业前景。其全球化布局为公司的持续发展和创新提供了强有力的支持。

3. 技术创新与产品研发

HellermannTyton一直将技术创新视为企业发展的核心驱动力。公司投入大量资源进行产品研发和技术创新,不断推出符合市场需求的新产品。例如,在数据和网络技术领域,HellermannTyton开发了领先的系统,被认为是行业中的领军者。这些创新产品不仅提升了公司的市场竞争力,还为客户提供了更加高效、可靠的解决方案。

4. 中国市场的深耕与发展

在中国市场,HellermannTyton同样取得了显著的成绩。海尔曼太通(无锡)电器配件有限公司作为HellermannTyton在中国的子公司,自1997年成立以来,一直致力于为全球客户设计、生产电线装配及网络连接产品。公司位于中国无锡新加坡工业园,拥有先进的生产设备和完善的质量管理体系。在中国市场的深耕与发展过程中,HellermannTyton凭借其优质的产品和服务赢得了广泛的认可和好评。

5. 多元化业务与可持续发展

HellermannTyton的业务范围不仅限于紧固、连接、布线等传统领域,还积极拓展多元化业务。公司致力于为客户提供全方位的解决方案,以满足不同行业的需求。同时,HellermannTyton还注重可持续发展,通过采用环保材料和绿色生产方式,减少对环境的影响。这种多元化业务和可持续发展的战略为公司的长期发展奠定了坚实的基础。

以上五个故事展示了HellermannTyton在电子行业中的发展历程和成就,体现了其作为全球领先制造商的实力和影响力。

ALPS公司的发展小趣事

ALPS公司是一家日本电子制造商,成立于1948年,总部位于东京。以下是关于ALPS公司发展的五个相关故事:

  1. 创立与早期发展:ALPS公司最初成立时,是一家小规模的电子零部件制造商,专注于生产开关和其他电子元器件。在日本战后经济快速复苏的背景下,ALPS公司迅速发展壮大,成为当时日本电子行业的重要参与者之一。

  2. 技术创新与产品多样化:随着时间的推移,ALPS公司不断进行技术创新,扩展其产品线。除了开关和电子元器件外,公司还涉足了汽车电子、通信设备、家电、数字产品等领域,推出了各种多功能的产品,满足不同行业和消费者的需求。

  3. 全球化战略:为了进一步扩大市场份额,ALPS公司实施了全球化战略,逐步在世界各地建立了生产基地和销售网络。公司在亚洲、欧洲、北美等地设立了子公司和分支机构,与当地客户和合作伙伴紧密合作,拓展了国际市场。

  4. 产业布局与战略合作:除了自身产品开发和制造外,ALPS公司还通过战略合作和并购等方式进行产业布局,加强了自身在电子行业中的地位。公司与其他行业领先企业合作,共同开发新技术和产品,提升了市场竞争力。

  5. 环境保护与社会责任:作为一家负责任的企业,ALPS公司重视环境保护和社会责任,致力于减少环境污染和资源浪费。公司采取了各种措施,包括提高能源利用效率、推动循环经济和环保产品设计等,为可持续发展做出了积极贡献。

以上是关于ALPS公司发展的五个相关故事,这些故事展示了ALPS公司在技术创新、产品多样化、全球化战略、产业布局和环境保护方面的发展历程,以及其在电子行业中的重要地位和影响力。

HP(Keysight)公司的发展小趣事

HP(Keysight)公司发展故事

故事一:初创时期的艰辛与突破

HP(惠普)的起源可以追溯到1939年,由威廉·惠普(William Hewlett)和戴维·欧文(David Packard)在美国加州的一个小车库内创立。最初,他们专注于生产音频振荡器,这是一种用于测试音频设备的设备。尽管条件简陋,但凭借过人的技术和敏锐的市场洞察力,他们的产品很快获得了市场的认可。这一成功为公司奠定了坚实的基础,也为后续进入电子仪器和计算机领域铺平了道路。

故事二:半导体技术的先驱

1940年,HP公司开发出了第一台采用半导体技术的电子计算机,这在当时是一项革命性的成就。这台计算机不仅能够执行复杂的计算任务,还标志着HP在半导体技术领域的领先地位。这一突破不仅为公司赢得了业界的尊重,也为后续的微型计算机和个人计算机的发展奠定了基础。

故事三:微型计算机市场的开拓者

1960年,HP公司再次引领行业潮流,开发出了世界上第一台商用微型计算机。这台计算机采用了更小的集成电路,比之前的计算机更加小巧、便宜且易于使用。这一创新不仅降低了计算机的门槛,使得更多人能够接触到计算机,也推动了计算机技术的普及和应用。HP在微型计算机市场的成功,进一步巩固了其在电子行业的领导地位。

故事四:个人电脑市场的崛起

进入70年代,HP公司开始涉足个人电脑市场。1970年,HP发布了第一台商业个人计算机(PC),这一举措标志着公司正式进入了一个全新的业务领域。随着个人电脑市场的迅速发展,HP不断推出新产品,满足消费者的多样化需求。从早期的台式机到后来的笔记本电脑,HP始终保持着技术领先优势,为用户带来更加便捷、高效的计算体验。

故事五:并购与多元化发展的战略

在发展过程中,HP公司也通过并购等方式不断拓展业务领域。2002年,HP以250亿美元收购了康柏(Compaq),这是当时科技行业最大的一笔收购。这次并购不仅增强了HP在个人电脑市场的竞争力,也推动了公司在服务器、存储设备等多个领域的发展。此外,HP还涉足软件及服务等多个领域,成为一个多元化的科技巨头。通过不断并购和业务拓展,HP在全球科技行业的地位日益稳固。

请注意,虽然问题中提到了Keysight,但Keysight实际上是惠普在2014年从惠普科技公司(HP Inc.)分拆出来的一家独立公司,专注于电子测量和测试解决方案。因此,上述故事主要围绕HP(惠普)公司的发展历史进行描述,并未直接涉及Keysight公司。

Hartmann Codier GmbH公司的发展小趣事

对于固态非易失性精密电位器构成的温度测量电路,网友可能关心的问题及其回答如下:

  1. 固态非易失性精密电位器的工作原理是什么?
    • 回答:固态非易失性精密电位器(如X9C102/103/104/503系列)包含有99个电阻单元的电阻阵列。滑动单元的位置由CS、U/D和INC三个输入端控制。滑动端的位置可以被存储在一个非易失性存储器中,因此在下一次上电工作时可以被重新调用。
  2. 这个电位器在温度测量中是如何应用的?
    • 回答:非易失性数控电位器在温度测量中的应用主要是通过其构成的记数式模数转换电路来实现的。这种电路能够将温度信号转换为数字信号,进而进行温度的测量和记录。
  3. 固态非易失性精密电位器的分辨率是多少?
    • 回答:分辨率取决于具体的电位器型号。例如,X9C503(50k Ω)的每个抽头间的阻值为505 Ω,这意味着其分辨率等于最大的电阻值被99除。
  4. 这个电位器的工作电压范围是多少?
    • 回答:工作电压范围通常为VCC=3V至5.5V。
  5. 固态非易失性精密电位器能否在长时间内保存数据?
    • 回答:是的,所有的Xicor非易失性存储器都设计成并经过测试能够用于持久地保存数据的应用场合。滑动端位置数据可保存100年。
  6. 这个电位器在温度测量中有什么特点或优势?
    • 回答:其特点包括低功耗、高分辨率、非易失性存储、长时间数据保存等。这些特点使得它在温度测量中具有高精度、高可靠性和长寿命的优势。
  7. 如何选择合适的固态非易失性精密电位器进行温度测量?
    • 回答:在选择电位器时,需要考虑其工作电压、电阻范围、分辨率、功耗以及数据保存能力等参数。同时,还需考虑电路设计的具体需求和限制条件。

以上回答基于参考文章中的相关信息进行整理和总结,旨在解答网友可能关心的问题。

东科半导体(DK)公司的发展小趣事

为了加速技术创新和人才培养,东科半导体(DK)公司积极与高校和科研机构开展产学研合作。公司与安徽工业大学共建联合实验室,共同研发新技术、新产品。此外,东科还积极引进国内外优秀人才,打造了一支高素质、专业化的研发团队。通过与高校和科研机构的合作,东科不仅提升了自身的研发实力,也为公司的长期发展奠定了坚实的人才基础。

GD Rectifiers Ltd公司的发展小趣事

随着全球对环境保护问题的日益关注,GD Rectifiers Ltd积极响应并践行绿色环保理念。公司投入大量资源进行绿色产品的研发和生产,推出了一系列符合环保标准的整流器产品。这些产品不仅具有高效、节能的特点,还大幅降低了生产和使用过程中的环境污染。同时,公司还加强了对废弃物的处理和回收利用工作,努力实现生产全过程的绿色化。GD Rectifiers Ltd的环保行动赢得了社会各界的广泛赞誉和支持,为公司的可持续发展奠定了坚实基础。

问答坊 | AI 解惑

PTR8000无线发送接收程序(试验通过 )

PTR8000无线发送接收程序(试验通过 )…

查看全部问答>

CE6.0下关于InterruptInitialize()的问题

请教了,我在CE6.0下,在应用程序里面调用InterruptInitialize()出错,我的系统逻辑中断是物理中断+SYSINTR_FIRMWARE直接得到的,是不是CE6.0不允许应用程序调用InterruptInitialize()函数?还有,就是我在驱动程序中使用 KernelIoControl(IO ...…

查看全部问答>

用GCC编译出来的映象过大,如何分析?

最近一些同事用C++写了一部分代码,近半年写出来的代码映象要比我们积累了10年的代码编译出来还要大. 我用NMPPC讲变量大小排序导出,却发现找不出新代码中哪些全局变量或局部变量过大.请问有什么较好的分析方法?…

查看全部问答>

DShow开发用Receive实现格式转换有问题

DShow开发用Receive实现格式转换有问题 HRESULT Receive(IMediaSample *pSample) {         YUV2RGB565(pSample, m_width, m_height, unsigned char* pRGB);         return S_OK; } 在trans filter ...…

查看全部问答>

优龙BIOS的一个新问题(很关键)

又弄出新问题了,寻求高人指导(优龙2440开发板换flash后bootloader出现问题flash换成k9k8g08优龙得是k9s1208) static int CheckBadBlk(U32 addr) {         U8 dat;         addr &= ~0x3f;   ...…

查看全部问答>

请教光耦隔离放大器型号,作用是驱动MOSFET并保护DSP

光耦隔离放大器的输入信号为DSP PWM引脚输出的3.3V的脉冲信号,输出信号接MOSFET的栅极,希望输出信号的幅值可以达到15V,应该选用什么型号. 望高手指点.谢谢!!…

查看全部问答>

论坛宗旨分享--花1万元的PCB设计高级讲座

花1万元的PCB设计高级讲座  --  PCB设计讲义…

查看全部问答>

赠送少量LM3S6911开发板PCB空板

我们最近做了块的TI的stellaris开发板,主要是针对网络应用,所以选择了个老的片子 :LM3S6911,没有用新出的功能更多的9xxx,8xxx系列;还有个想法就是这样成本会降低,这个权当是入门级的LM3S开发板。现在手头除了调试用的2块板子外,还剩18块空板 ...…

查看全部问答>

请教压力传感器驱动及放大中出现的一个诡异的问题

如图所示是一个电桥式压力传感器,每个桥臂大约是5K的电阻,根据要求使用1.5mA驱动它,设计使用TL431,焊接后发现如果传感器上两个信号输出悬空,不接AD620是正常的,也就是流过传感器电流是1.5ma,当时当接上AD620后测量发现电流下降了而且TL431的 ...…

查看全部问答>