[STM32F3] 关于STM32F3标准外设库中的一个语法错误

[复制链接]
1060|3
 楼主| 花间一壶酒sd 发表于 2023-5-30 12:04 | 显示全部楼层 |阅读模式
错误代码段如下
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
  2. {
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
  4.   
  5.   FlagStatus bitstatus = RESET;  
  6.   
  7.   switch(TimerIdx)
  8.   {
  9.     case HRTIM_TIMERINDEX_MASTER:
  10.     {
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
  12.       {
  13.         bitstatus = SET;
  14.       }
  15.       else
  16.       {
  17.         bitstatus = RESET;
  18.       }
  19.     }
  20.     break;
  21.    
  22.     case HRTIM_TIMERINDEX_TIMER_A:
  23.     case HRTIM_TIMERINDEX_TIMER_B:
  24.     case HRTIM_TIMERINDEX_TIMER_C:
  25.     case HRTIM_TIMERINDEX_TIMER_D:
  26.     case HRTIM_TIMERINDEX_TIMER_E:
  27.     {
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
  29.       {
  30.         bitstatus = SET;
  31.       }
  32.       else
  33.       {
  34.         bitstatus = RESET;
  35.       }
  36.     }
  37.     break;

  38.     default:
  39.     break;  
  40.   }   
  41.   return bitstatus;
  42. }


 楼主| 花间一壶酒sd 发表于 2023-5-30 12:05 | 显示全部楼层
编译报错如下
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
 楼主| 花间一壶酒sd 发表于 2023-5-30 12:05 | 显示全部楼层
修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。

即变量的定义要在语句之前。
 楼主| 花间一壶酒sd 发表于 2023-5-30 12:05 | 显示全部楼层
修改后的代码如下:
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
  2. {
  3.         FlagStatus bitstatus = RESET;
  4.        
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  
  6.   
  7.   switch(TimerIdx)
  8.   {
  9.     case HRTIM_TIMERINDEX_MASTER:
  10.     {
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
  12.       {
  13.         bitstatus = SET;
  14.       }
  15.       else
  16.       {
  17.         bitstatus = RESET;
  18.       }
  19.     }
  20.     break;
  21.    
  22.     case HRTIM_TIMERINDEX_TIMER_A:
  23.     case HRTIM_TIMERINDEX_TIMER_B:
  24.     case HRTIM_TIMERINDEX_TIMER_C:
  25.     case HRTIM_TIMERINDEX_TIMER_D:
  26.     case HRTIM_TIMERINDEX_TIMER_E:
  27.     {
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
  29.       {
  30.         bitstatus = SET;
  31.       }
  32.       else
  33.       {
  34.         bitstatus = RESET;
  35.       }
  36.     }
  37.     break;

  38.     default:
  39.     break;  
  40.   }   
  41.   return bitstatus;
  42. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1219

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部