cancel
Showing results for 
Search instead for 
Did you mean: 

power voltage detector external input error in code generation with stm32G0

ABasi.2
Associate III

Hi !

 

i have found that if you try to select power voltage detector in (external input analog voltage) on Cube Ide there is a missing line in the code generated that make the code don't work

here an example of code generated for the option with the internal analog voltage:

 

 

void HAL_MspInit(void)
{

  /* USER CODE BEGIN MspInit 0 */

  /* USER CODE END MspInit 0 */
  PWR_PVDTypeDef sConfigPVD = {0};

  __HAL_RCC_SYSCFG_CLK_ENABLE();
  __HAL_RCC_PWR_CLK_ENABLE();

  /* System interrupt init*/

  /* Peripheral interrupt init */
  /* PVD_VDDIO2_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(PVD_VDDIO2_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(PVD_VDDIO2_IRQn);

  /** PVD Configuration
  */
  sConfigPVD.PVDLevel = PWR_PVDLEVEL_RISING_0|PWR_PVDLEVEL_FALLING_0;
  sConfigPVD.Mode = PWR_PVD_MODE_IT_RISING_FALLING;
  HAL_PWR_ConfigPVD(&sConfigPVD);

  /** Enable the PVD Output
  */
  HAL_PWR_EnablePVD();

  /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral
  */
  HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE);

  /* USER CODE BEGIN MspInit 1 */

  /* USER CODE END MspInit 1 */
}

 

 

here the code for the external input analog voltage:

 

void HAL_MspInit(void)
{

  /* USER CODE BEGIN MspInit 0 */

  /* USER CODE END MspInit 0 */
  PWR_PVDTypeDef sConfigPVD = {0};

  __HAL_RCC_SYSCFG_CLK_ENABLE();
  __HAL_RCC_PWR_CLK_ENABLE();

  /* System interrupt init*/

  /* Peripheral interrupt init */
  /* PVD_VDDIO2_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(PVD_VDDIO2_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(PVD_VDDIO2_IRQn);

  /** PVD Configuration
  */
  sConfigPVD.Mode = PWR_PVD_MODE_IT_RISING_FALLING;
  HAL_PWR_ConfigPVD(&sConfigPVD);

  /** Enable the PVD Output
  */
  HAL_PWR_EnablePVD();

  /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral
  */
  HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE);

  /* USER CODE BEGIN MspInit 1 */

  /* USER CODE END MspInit 1 */
}

 

 

the line  sConfigPVD.PVDLevel =  is missing!

 

to make the code for the external input analog voltage you have to add the missing line with the value  PWR_PVDLEVEL_7

 

so here the correct lines of code:

 

 sConfigPVD.PVDLevel = PWR_PVDLEVEL_7;
  sConfigPVD.Mode = PWR_PVD_MODE_IT_RISING_FALLING;
  HAL_PWR_ConfigPVD(&sConfigPVD);

 

is it possible to correct this issue in the next release?

 

thank you

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Amel NASRI
ST Employee

Hi @ABasi.2 ,

I confirm the reported issue.

I raised it internally (#197410) to be fixed in coming releases.

-Amel

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

2 REPLIES 2
Amel NASRI
ST Employee

Hi @ABasi.2 ,

I confirm the reported issue.

I raised it internally (#197410) to be fixed in coming releases.

-Amel

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

thank you!

best reguards