alisa123 发表于 2015-4-30 15:00:35

stm32f302在程序编译时出现如下错误

..\LibStm32\Source\stm32f30x_hrtim.c(1139): error:#268: declaration may not appear after executable statement in block
FlagStatus bitstatus = RESET;
这个是怎么引起的?求高手帮忙解决。谢谢

发表于 2015-4-30 15:16:40

楼主把前后的代码都发出来。还有FlagStatus 的定义。

hbzjt2012 发表于 2015-4-30 15:17:39

貌似是未定义

alisa123 发表于 2015-4-30 15:24:46

安 发表于 2015-4-30 15:16
楼主把前后的代码都发出来。还有FlagStatus 的定义。

FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
{
assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));

FlagStatus bitstatus = RESET;

switch(TimerIdx)
{
    case HRTIM_TIMERINDEX_MASTER:
    {
      if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
      {
      bitstatus = SET;
      }
      else
      {
      bitstatus = RESET;
      }
    }
    break;
   
    case HRTIM_TIMERINDEX_TIMER_A:
    case HRTIM_TIMERINDEX_TIMER_B:
    case HRTIM_TIMERINDEX_TIMER_C:
    case HRTIM_TIMERINDEX_TIMER_D:
    case HRTIM_TIMERINDEX_TIMER_E:
    {
      if ((HRTIMx->HRTIM_TIMERx.TIMxISR & HRTIM_FLAG) != RESET)
      {
      bitstatus = SET;
      }
      else
      {
      bitstatus = RESET;
      }
    }
    break;

    default:
    break;
}   
return bitstatus;
}

发表于 2015-4-30 17:10:08

你把assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));放到FlagStatus bitstatus = RESET;后面。变量的定义要在语句前面。

alisa123 发表于 2015-4-30 17:46:05

安 发表于 2015-4-30 17:10
你把assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));放到FlagStatus bitstatus = RESET;后面。变量的定 ...

谢谢你的回复。
页: [1]
查看完整版本: stm32f302在程序编译时出现如下错误