TI中文支持网
TI专业的中文技术问题咨询交流网站

ccs5.4.0 判断语句不执行

您好,我用的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么?还是我程序写的不对呢?求大神解答……

mangui zhang:

已回复  请查看

肯定不是编译器的bug

您好,我用的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么?还是我程序写的不对呢?求大神解答……

Seven Han:

同贴:http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/139811.aspx

您好,我用的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么?还是我程序写的不对呢?求大神解答……

BIN YAO1:

IO口控制不建议使用GPADAT寄存器,拉高使用GPASET,拉低使用GPACLEAR试试,GPADAT用作读取管脚状态更适合

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