使用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)呢?很纳闷呀
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>