打印

程序烧写完后输入捕获无法进入中断

[复制链接]
2358|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jie581|  楼主 | 2012-10-17 12:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jie581 于 2012-10-17 13:16 编辑

请教一下:我在debug模式下输入捕获可以进入中断,但烧写进去后就进不了中断了,不管烧写的debug版本还是release版本。我用一个IO口模拟方波信号然后让其输入捕获。
void timer2_init(void)  ////Tmer2作为捕获定时器
{
T2CON = 0;
TMR2=0;
T2CONbits.TON = 1;  //TON:定时器开控制位,1 = 启动定时器
       //没有分频1:1
}
void in_capture_init(void)
{
int i;
   //捕获端口
TRISBbits.TRISB5=1;  
IC8CON=0;
IC8CONbits.ICM=0x011;  //每个上升沿都捕获
IC8CONbits.ICI=0x00;   //每次捕获1个后中断
IC8CONbits.ICTMR=0x1;  //TMR2作为捕获定时器

IPC4bits.IC8IP=7;  //IC8的中断优先级;
IFS1bits.IC8IF=0;  //
IEC1bits.IC8IE=1;  //IC1IE:输入捕捉通道1 中断允许位;
}
void __attribute__((__interrupt__,auto_psv)) _IC8Interrupt(void)
{
int i;
ic8_num++;
if(ic8_num==65535)
{
  ic8_num=0;
}
CaptureValue[0] = IC8BUF;//获取捕捉值

IFS1bits.IC8IF=0; //中断标志位清零
}
int main (void)
{
int i;
     
ioport_init();    //I/O初始化
timer2_init();
in_capture_init();
while(1)
{
   TRISGbits.TRISG1=0;     //RG1 AS YXCS0 OUT,设置为输出
  if(frequency_flag==1)
  {
   LATG|=0x0002;    //输出高电平
   frequency_flag=0;
  }else{

   LATG&=0x0000;    //输出低电平
   frequency_flag=1;
  }
  

  for(i=0;i<5000;i++)
  {
   __asm__ volatile ("nop");
  }
   
}
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

0

粉丝