错误代码段如下
- 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[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
- {
- bitstatus = SET;
- }
- else
- {
- bitstatus = RESET;
- }
- }
- break;
- default:
- break;
- }
- return bitstatus;
- }
复制代码
编译报错如下
- ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error: #268: declaration may not appear after executable statement in block
复制代码
修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。
即变量的定义要在语句之前。
修改后的代码如下:
- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
- {
- FlagStatus bitstatus = RESET;
-
- assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
- 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[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
- {
- bitstatus = SET;
- }
- else
- {
- bitstatus = RESET;
- }
- }
- break;
- default:
- break;
- }
- return bitstatus;
- }
复制代码
|