TI中文支持网
TI专业的中文技术问题搜集分享网站

F28035 时钟中断 判断语句不执行

您好,我用的F28035,编译器是CCS5.4.0,有这样一段程序:

   if(q.out >= 0.15 )
   {
    GpioDataRegs.GPADAT.bit.GPIO4 = 0;
    GpioDataRegs.GPADAT.bit.GPIO5 = 1;//方向控制
   }
   else if(q.out > -0.15)
   {
    GpioDataRegs.GPADAT.bit.GPIO4 = 1;//失能
    ipout = 0;
   }
   else
   {
    GpioDataRegs.GPADAT.bit.GPIO4 = 0;  //使能
    GpioDataRegs.GPADAT.bit.GPIO5 = 0;//方向控制
   }
这段程序是写在时钟中断里的,现象是GPIO4变为1之后,以后无论判断条件如何都不会再变为0;只有在上述程序第一行设置断点,进行单步在线调试,GPIO4=0才会被执行。
这是怎么回事呢?是编译器有bug么?还是我程序写的不对呢?求大神解答……
关于时钟中断,如果中断程序的执行时间大于中断时间,是会继续执行中断程序对么?还有在执行时钟中断的时候PWM输出、编码器eQEP采集模块会停止运行么?

Seven Han:

你好,先测试IO口输出正确,将level条件使用enum定义,然后尝试下:

 

您好,我用的F28035,编译器是CCS5.4.0,有这样一段程序:

   if(q.out >= 0.15 )
   {
    GpioDataRegs.GPADAT.bit.GPIO4 = 0;
    GpioDataRegs.GPADAT.bit.GPIO5 = 1;//方向控制
   }
   else if(q.out > -0.15)
   {
    GpioDataRegs.GPADAT.bit.GPIO4 = 1;//失能
    ipout = 0;
   }
   else
   {
    GpioDataRegs.GPADAT.bit.GPIO4 = 0;  //使能
    GpioDataRegs.GPADAT.bit.GPIO5 = 0;//方向控制
   }
这段程序是写在时钟中断里的,现象是GPIO4变为1之后,以后无论判断条件如何都不会再变为0;只有在上述程序第一行设置断点,进行单步在线调试,GPIO4=0才会被执行。
这是怎么回事呢?是编译器有bug么?还是我程序写的不对呢?求大神解答……
关于时钟中断,如果中断程序的执行时间大于中断时间,是会继续执行中断程序对么?还有在执行时钟中断的时候PWM输出、编码器eQEP采集模块会停止运行么?

BIN YAO1:

回复 Jim1:

TO Jim1,

判断2加了else了,肯定是小于0.15的

赞(0)
未经允许不得转载:TI中文支持网 » F28035 时钟中断 判断语句不执行
分享到: 更多 (0)