2020-12-05 09:22 AM
NUCLEO-F429ZI
mxcube v6.1
HAL_RCC_OscConfig() fails using demo project I believe it fails exactly here:
pll_config = RCC->PLLCFGR;
if((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource)
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != RCC_OscInitStruct->PLL.PLLN) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ))
{
return HAL_ERROR;
}
I tried 2 boards, same result.
Using arm GCC
thanks,
2020-12-05 09:35 AM
Hello @YPear.1 ,
Welcome to the STM32 Community :smiling_face_with_smiling_eyes:
You are right, there is an issue within HAL_RCC_OscConfig() when checking on the RCC_PLLCFGR register. This is already passed to our development team for fix in the coming release of STM32CubeF4.
So, the lines should be as follow:
if ((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ) << RCC_PLLCFGR_PLLQ_Pos))
{
return HAL_ERROR;
}
For more details, please refer to this github link .
Please mark my answer as best by clicking on the "Select as Best" button if it fully solved your issue. This will help other users find this solution more quickly.
Imen
2020-12-05 10:06 AM
Thank you! Do know when the release will be?
thanks,
2020-12-05 10:20 AM
The fix is integrated internally in the coming STM32CubeF4 release, but for the moment I have no information to share regarding the target date.
Imen
2020-12-07 12:04 PM
Unfortunately it seems like the code update leads to the same result. I tripled checked it. Any other insights?
thanks,
2020-12-07 12:31 PM
Make sure the structure is cleared if used as an automatic/local variable.
Show calling context.
2020-12-07 01:09 PM
I'm not sure what else to modify, this is code generated by cube mx. I added the patch from above.
if ((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) ||
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ) << RCC_PLLCFGR_PLLQ_Pos))
{
return HAL_ERROR;
}