stm32f429使用了2个不同的定时器,编译时候回调函数重复定义,怎么办呢?

2019-07-20 03:58发布

每个定时器中的HAL_TIM_PWM_Init(),都需要调用这个回调函数HAL_TIM_PWM_MspInit(),所以出现重复定义HAL_TIM_PWM_MspInit。怎么办?求解,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
亦辰
1楼-- · 2019-07-20 09:24
可以在HAL_TIM_PWM_MspInit() 函数中做个句柄的判断,if(htim== (&xxxHandler)) 之类的表达式,具体如何用再去考证一下
正点原子
2楼-- · 2019-07-20 10:00
 精彩回答 2  元偷偷看……
保尔罗夫
3楼-- · 2019-07-20 13:20
正点原子 发表于 2019-1-25 02:14
每个定时器的函数都不一样吧,比如TIM1是HAL_TIM1_PWM_MspInit,其他的名字各不相同才对。

HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)
{
  /* Check the TIM handle allocation */
  if(htim == NULL)
  {
    return HAL_ERROR;
  }

  /* Check the parameters */
  assert_param(IS_TIM_INSTANCE(htim->Instance));
  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));

  if(htim->State == HAL_TIM_STATE_RESET)
  {
    /* Allocate lock resource and initialize it */
    htim->Lock = HAL_UNLOCKED;
    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
    HAL_TIM_PWM_MspInit(htim);
  }

  /* Set the TIM state */
  htim->State= HAL_TIM_STATE_BUSY;  
  
  /* Init the base time for the PWM */  
  TIM_Base_SetConfig(htim->Instance, &htim->Init);
   
  /* Initialize the TIM state*/
  htim->State= HAL_TIM_STATE_READY;
  
  return HAL_OK;
} [/mw_shl_code]
保尔罗夫
4楼-- · 2019-07-20 16:30
正点原子 发表于 2019-1-25 02:14
每个定时器的函数都不一样吧,比如TIM1是HAL_TIM1_PWM_MspInit,其他的名字各不相同才对。

函数好像是一样的。
保尔罗夫
5楼-- · 2019-07-20 21:18
 精彩回答 2  元偷偷看……
保尔罗夫
6楼-- · 2019-07-20 23:17
已经解决

一周热门 更多>