外部中断的问题

[复制链接]
1187|26
手机看帖
扫描二维码
随时随地手机跟帖
Brand2|  楼主 | 2018-9-24 10:24 | 显示全部楼层 |阅读模式
利用IO口的两个引脚作为外部中断信号的输入引脚进行外部中断判断,主程序中已进入低功耗LPM3状态,然后写外部中断程序,请问这有做的话可以实时检测中断信号并进入相应的中断程序吗???或者说应该把外部中断程序放在循环中呢!!!

相关帖子

Soraka| | 2018-9-24 10:37 | 显示全部楼层
要用外部中断,必须在有标明外部中断的引脚设置才行

使用特权

评论回复
Garen2| | 2018-9-24 10:45 | 显示全部楼层
外部中断(或者说所有的中断)程序是独立于主程序的,不能写在循环程序里的。

使用特权

评论回复
Ryze| | 2018-9-24 11:01 | 显示全部楼层
利用P1口的引脚设置为外部中断引脚,那我们直接写外部中断程序,中断引脚能实时检测中断信号吗?

使用特权

评论回复
Varus| | 2018-9-24 12:31 | 显示全部楼层
我利用IO口写了一个检测外部中断的程序,调试的时候却出了问题,能帮我看看哪里出问题了吗
#include "msp430x24x.h"

unsigned char flag;
void main(void)
{
   WDTCTL = WDTPW + WDTHOLD;
   
   TACCTL0=CCIE;//开启定时器A中断
   TACCR0=1000-1;
   TACTL=TASSEL_1+ID_3+TACLR+MC_1;//选择ACLK作为时钟源,时钟八分频,定时器清除位

  
   P1DIR = 0x9F;                             
   P1OUT = 0x00;                              
   P2DIR = 0xFF;                           
   P2OUT = 0x00;                                
   P3DIR = 0xFF;                             
   P3OUT = 0x00;                                
   P4DIR = 0xFF;                             
   P4OUT = 0x00;                                
   P5DIR = 0xFF;                           
   P5OUT = 0x00;                                
   P6DIR = 0xFF;                             
   P6OUT = 0x00;                                

   /****P1.5中断触发********/
   P1IES^=BIT5;//设置为上升沿触发
   P1IFG&=~BIT5;//清除终端标志位
   P1IE|=BIT5;//设置终端使能
   /*****P1.6中断触发******/
   P1DIR&=~BIT6;//中断引脚P1.6设置为输入端口
   P1IES|=BIT6;//设置为下降沿触发
   P1IFG&=~BIT6;//清除终端标志位
   P1IE|=BIT6;//设置终端使能

  
   
   //P1DIR|=BIT0;//MCU工作状态标志
   _EINT();
   __bis_SR_register(LPM3_bits );     // Enter LPM3, enable interrupts
  
   while(1)
  {
   //__bis_SR_register(LPM3_bits );     // Enter LPM3, enable interrupts
  }
}
#pragma vector =PORT1_VECTOR
__interrupt void P1_Interrupt(void)
{
   if((P1IFG&0X40)==BIT6)//判断TLV3691是否产生低电平中断信号
  {
   P1IFG&=~BIT6;//中断标志清除
   P2OUT&= ~(BIT7);//P2.0 LED等灭
   flag=0;
   //__bis_SR_register(LPM3_bits );     // Enter LPM3, enable interrupts
  }
else  if((P1IFG&0X20)==BIT5)//判断TLV3691是否产生高电平中断信号
  {
   P1IFG&=~BIT5;//中断标志清除
   //__bic_SR_register_on_exit(LPM3_bits);     // Clear LPM3 bits from 0(SR)
   P2OUT|=BIT7;//P2.0 LED灯亮
   flag=1;
  }
}
#pragma vector =TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
  if(flag==1)
  {
    P1OUT^=BIT1;
  }
  else if(flag==0)
  {
     P1OUT&=~(BIT1);
  }

}

使用特权

评论回复
Snow7| | 2018-9-24 16:36 | 显示全部楼层
我调试程序时直接写了一个让led亮的程序,用上拉电阻的方法,给低电平灯亮,可是每次我通电后要按一下芯片那里,或者按一下复位开关,灯才能亮,这是什么原因呢

使用特权

评论回复
android2| | 2018-9-24 16:46 | 显示全部楼层
430程序运行时如果在程序设置,它的时钟源是哪个呢?DCO吗

使用特权

评论回复
kkzz| | 2018-9-26 19:43 | 显示全部楼层
中断可以唤醒低功耗。

使用特权

评论回复
hudi008| | 2018-9-26 19:44 | 显示全部楼层
外部中断程序放在循环中为什么呢?

使用特权

评论回复
lzmm| | 2018-9-26 19:44 | 显示全部楼层
要执行的程序很复杂吗?

使用特权

评论回复
minzisc| | 2018-9-26 19:44 | 显示全部楼层
中断信号并进入相应的中断程序

使用特权

评论回复
selongli| | 2018-9-26 19:45 | 显示全部楼层
使用中断函数

使用特权

评论回复
fentianyou| | 2018-9-26 19:45 | 显示全部楼层
直接中断执行。

使用特权

评论回复
xiaoyaodz| | 2018-9-26 19:45 | 显示全部楼层
能够粘贴一下代码吗?

使用特权

评论回复
febgxu| | 2018-9-26 19:46 | 显示全部楼层
外部中断程序即可。

使用特权

评论回复
sdlls| | 2018-9-26 19:46 | 显示全部楼层
可以实时检测中断信号

使用特权

评论回复
pixhw| | 2018-9-26 19:46 | 显示全部楼层
你是说唤醒低功耗的条件吗?

使用特权

评论回复
febgxu| | 2018-9-26 19:47 | 显示全部楼层
考虑到效率需要使用外部中断。

使用特权

评论回复
kkzz| | 2018-9-26 19:47 | 显示全部楼层
直接放在中断函数里面就行。

使用特权

评论回复
xiaoyaodz| | 2018-9-26 19:47 | 显示全部楼层
有可能影响中断的触发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

157

主题

824

帖子

2

粉丝