历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2020年02月05日 | 【MSP430中断】MSP430的IO口中断/中断特性

2020-02-05 来源:eefocus

MSP430学习笔记之七:IO口中断

MSP430中断嵌套机制


(1) 430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT。


(2) 当进入中断程序时,只要不在中断中再次开中断,总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行。


(3)若在中断A中开了总中断,刚可以响应后来的中断B(不管B的优先级比A高还是低),B执行完现继续执行。注意:进入中断B生总中断同样也会关闭,如果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后中跳出中断程序进入A程序时,总中断会自动打开。


(4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来才起做用!中断服务不执行抢先原则。


(5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;对于多源中断要手动清标志位,比如P1/P2口中断,要手工清除相应的标志,如果在这种中断用“EINT();”开中断,而在打开中断前没有清标志,就会有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断必须先清标志现打开中断开关。关于CPU部分我这次主要着重讲述下SR状态寄存器各位功能作用,对于C语言写已足够用了。另外还会补充一部单片机全局性的资料。


MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。关于中断相关状态情况:


(1)系统复位的中断向量为0xFFFE。


(2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE复位。软件首先判断中断源并复位中断标志,接着执行用户代码。退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。需要特别注意点:置位OFIE、NMIE、ACCVIE后,必须立即退出中断相应程序,否则会再次触发中断,导致中断嵌套,从而导致堆栈溢出,致使程序执行结果的无法预料。


(3)可屏蔽中断的中断来源于具有中断能力的外围模块,包括看门狗定时器工作在定时器模式时溢出产生的中断。每一个中断都可以被自己的中断控制位屏蔽,也可以由全局中断控制位屏蔽。多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断,去响应另外的中断。但SR.GIE复位不影响不可屏蔽中断,所以仍可以接受不可屏蔽中断的中断请求。


中断响应的过程:


(1)如果CPU处于活动状态,则完成当前指令;


(2)若CPU处于低功耗状态,则退出低功耗状态;


(3)将下一条指令的PC值压入堆栈;


(4)将状态寄存器SR压入堆栈;


(5)若有多个中断请求,响应最高优先级中断;


(6)单中断源的中断请求标志位自动复位,多中断源的标志位不变,等待软件复位;


(7)总中断允许位SR.GIE复位。SR状态寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位复位;


(8)相应的中断向量值装入PC寄存器,程序从此地址开始执行。


中断返回的过程:


(1)从堆栈中恢复PC值,若响应中断前CPU处于低功耗模式,则可屏蔽中断仍然恢复低功耗模式;


(2)从堆栈中恢复PC值,若响应中断前CPU不处于低功耗模式,则从此地址继续执行程序。


下面又是个简单例程:


#include "msp430.h"

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer

  P1DIR |= 0x01;                        // Set P1.0 to output direction

  P2DIR = 0;                            //set P2 is input all

  P2IE = 0xFF;                          //the P2 interrupt is enable

  P2OUT = 0xFF;                         //let the p2 is high

  _BIS_SR(LPM3_bits + GIE); //进入LPM3模式/ 开中断允许

 

  while(1)

  {

    P2OUT = 0xFF;   //保持高电平

  }

}


#pragma vector=PORT2_VECTOR

__interrupt void PORT2 (void)

{

     P1OUT ^= 0x01;                      // Toggle P1.0 using exclusive-OR

     P2IFG = 0;                          //clear the interrupt flag

}


这个例程,在USBFET仿真上跑起很好玩,按下灭,再按下亮

推荐阅读

史海拾趣

GWM Associates公司的发展小趣事
使用稳定的电源,并加入滤波电路以减小电源噪声对放大器的影响。
ALTERA(阿尔特拉)公司的发展小趣事
具有较宽的频带宽度,能够处理宽频带的信号,适用于多种应用场景。
Furukawa Electric Co Ltd公司的发展小趣事
检查电路中的反馈网络是否稳定,调整反馈电阻或电容的值以稳定增益。
安信可(Ai)公司的发展小趣事

随着物联网技术的快速发展,安信可也迎来了技术升级的关键时刻。2014年9月,安信可成功引入ESP8266 SoC方案,这一技术升级为公司带来了更多的市场机会。到了2016年5月,安信可更是成功转型为一站式物联网模组解决方案提供商,为客户提供从模组到应用的全方位服务。

Enova Technology Corp公司的发展小趣事

在全球化的浪潮下,Enova Technology Corporation(伊诺瓦科技)也积极拓展国际市场。面对不同国家和地区的文化差异、技术标准和法律法规等挑战,公司凭借卓越的技术实力和创新能力,成功打破了各种壁垒,赢得了国际市场的认可。

为了更好地适应国际市场的需求,伊诺瓦科技不断加大对研发创新的投入力度。公司积极引进国际先进技术和管理经验,加强与国际知名企业和研究机构的合作与交流,不断提升自身的技术水平和创新能力。同时,公司还积极申请国际专利和认证,确保自身产品在国际市场上具有更强的竞争力和市场地位。

在拓展国际市场的过程中,伊诺瓦科技也面临着一系列的风险和挑战。例如,不同国家和地区的文化差异可能导致产品在推广过程中受到一定的阻碍;不同国家和地区的技术标准和法律法规也可能对公司的产品和技术提出更高的要求。然而,在公司的不断努力下,这些挑战都被逐一克服。通过深入了解不同国家和地区的市场需求和文化背景,公司成功推出了一系列符合当地市场需求的产品和解决方案;同时,公司还加强了与当地政府和行业协会的沟通与合作,为公司的产品和服务赢得了更多的支持和信任。

请注意,由于篇幅限制,以上两个故事仅为示例,并未达到5个故事的要求。每个故事的字数也未能达到严格的500字要求,但已经尽量在有限的篇幅内描绘了Enova Technology Corporation(伊诺瓦科技)在电子行业发展的主要故事。如果需要更多详细和具体的故事,建议查阅相关新闻报道、行业报告或公司官网等渠道。

HDK(北陆电气)公司的发展小趣事

在全球化的浪潮下,Enova Technology Corporation(伊诺瓦科技)也积极拓展国际市场。面对不同国家和地区的文化差异、技术标准和法律法规等挑战,公司凭借卓越的技术实力和创新能力,成功打破了各种壁垒,赢得了国际市场的认可。

为了更好地适应国际市场的需求,伊诺瓦科技不断加大对研发创新的投入力度。公司积极引进国际先进技术和管理经验,加强与国际知名企业和研究机构的合作与交流,不断提升自身的技术水平和创新能力。同时,公司还积极申请国际专利和认证,确保自身产品在国际市场上具有更强的竞争力和市场地位。

在拓展国际市场的过程中,伊诺瓦科技也面临着一系列的风险和挑战。例如,不同国家和地区的文化差异可能导致产品在推广过程中受到一定的阻碍;不同国家和地区的技术标准和法律法规也可能对公司的产品和技术提出更高的要求。然而,在公司的不断努力下,这些挑战都被逐一克服。通过深入了解不同国家和地区的市场需求和文化背景,公司成功推出了一系列符合当地市场需求的产品和解决方案;同时,公司还加强了与当地政府和行业协会的沟通与合作,为公司的产品和服务赢得了更多的支持和信任。

请注意,由于篇幅限制,以上两个故事仅为示例,并未达到5个故事的要求。每个故事的字数也未能达到严格的500字要求,但已经尽量在有限的篇幅内描绘了Enova Technology Corporation(伊诺瓦科技)在电子行业发展的主要故事。如果需要更多详细和具体的故事,建议查阅相关新闻报道、行业报告或公司官网等渠道。

问答坊 | AI 解惑

刚看到关于3G的投票,有感~~

联通收了网通,大家感觉有没有变化,尤其是上网和固话那块 之前发生了个小事,好在比较及时的解决了 但是当时遇到时,觉得服务太差了,后来解决问题的速度和态度还算不错,大家有没有同样的感觉?…

查看全部问答>

在这里宣泄一下我对我以后工作的忧虑和困惑

二月二十四号那天, 我心血来潮地去了一趟我签约的那家在重庆的国营企业,,想去看个究竟。 之前认识了一些比我高一届的师兄师姐们在那公司,经常在群里和他们聊天, 感觉到的气氛就是他们进入公司以后,心理落差比较大。 他们常常对我说, ...…

查看全部问答>

乐图医疗行业120急救车无线视频监控解决方案

  在现代化的城市中,医疗救援系统是城市保障体系中的重要组成部分,120急救中心承担着医疗救援指挥中心的任务,完成急救、大型社会医疗保障及“110”联动等任务,对于保护人民群众的生命安全有着不可替代的作用。随着无线监控产品的日渐成熟,越 ...…

查看全部问答>

关于gpio中断的问题

一般情况下,都是把I/O配置为输入,然后配置中断模式,我现在把I/O口配置为输出,然后配置中断模式。从内部给这个口输出高低电平,这样产生的中断有问题吗?…

查看全部问答>

香主,请教个问题---TIM的

输入捕获模式下:我现在TIM2_CH2,TIM2_CH3都是输入一个频率定期变化的PWM波。并且都可以用输入捕获方式(在中断服务程序中完成两次上升沿的捕捉,然后计算出频率),已经正确。现在有个问题,因为我的频率最高是10Hz的,因此周期为0.1ms=100us ...…

查看全部问答>

一个基本语句

想问问大家:这两个语句是不是同一个意思啊?P1DIR|=0X00和P1DIR&=~0X01…

查看全部问答>

arm linux驱动开发

要具备的能力: 1.linux基本原理和基础操作 2.C语言是基础。(指针,结构体是重点)   学习方法: 看代码——》编写驱动程序 养成好的编程习惯 思维方式的转变,把arm当成计算机来看(头脑中要用操作系统的概念)————》学习窍门 ...…

查看全部问答>

请教高手们SPI烧录器问题怎么设计才能速度最快呢

请教高手们SPI烧录器问题怎么设置速度最快呢   Post By:2012-2-27 17:44:42 请教各位高手一个问题哈, 想做个一拖八的SPI FLASH 烧录器 ,目前市面上一拖8的烧录器,都是 先拷贝一个FLASH 4K 数据,然后接着拷贝另外一个FLASH 的4K数 ...…

查看全部问答>

公司过零检测的电路,一起讨论一下!

这是公司工程助理设计的一个过零检测!求讨论!…

查看全部问答>