STM32F429 DISCORY初始化PCD后再次返回到130行执行

2019-07-14 13:54发布

使用STM32F429 DISCORY做USB DEVICE的实验,在初始化PCD的时候,在HAL_PCD_Init函数中发生一个很奇怪的问题,我的HAL_PCD_Init函数部分如下
122 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
{
  uint32_t i = 0;  
  printf("[%s %d] ",__FUNCtiON__,__LINE__);
  if(hpcd == NULL)
  {
    printf("[%s %d] ",__FUNCTION__,__LINE__);
    return HAL_ERROR;
  }
  printf("[%s %d] ",__FUNCTION__,__LINE__);
  /* Check the parameters */
  assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));

  hpcd->State = HAL_PCD_STATE_BUSY;  
  /* Init the low level hardware : GPIO, CLOCK, NVIC... */
  printf("[%s %d] ",__FUNCTION__,__LINE__);
  HAL_PCD_MspInit(hpcd);
  printf("[%s %d] ",__FUNCTION__,__LINE__);
  /* Disable the Interrupts */
__HAL_PCD_DISABLE(hpcd);
:串口打出来的回显是
[HAL_PCD_Init 127]
[HAL_PCD_Init 133]
[HAL_PCD_Init 140]
[HAL_PCD_Init 130]
这就问题出来了,在一开始进入HAL_PCD_Init函数的时候,就已经检查过参数,但是为什么在执行完HAL_PCD_MspInit函数后,又再次返回到130行去执行if(hpcd == NULL)呢?很纳闷呀
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。