Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

possible error in stm32_ll_lpbam.c

Abierto
#65 9 comentarios 0 reacciones 1 asignado Ver en GitHub

@MKISTM ya está trabajando en esto.

Desde el 8/5/2026.

  • #73 de @94xhn — cerrado sin fusionar
  • #74 de @94xhn — abierto

Evaluación

Este issue todavía no se ha evaluado.

Descripción

bug internal bug tracker lpbam utils
LPBAM_Status_t LPBAM_LPTIM_FillNodeConfig(LPBAM_LPTIM_ConfNode_t const *const  pConfNode,
                                          DMA_NodeConfTypeDef    *const pDMANodeConfig)
{
  LPBAM_Status_t   status;
  LPBAM_InfoDesc_t desc_info;
  ...

in stm32_lpbam_lptim.c leaves desc_info uninitialized and calls

LPBAM_Status_t LPBAM_LPTIM_FillStructInfo(LPBAM_LPTIM_ConfNode_t const *const pConfNode,
                                          LPBAM_InfoDesc_t       *const pDescInfo)

in stm32_ll_lpbam.c with reference to desc_info.

While LPBAM_LPTIM_FillStructInfo does not set pDescInfo->Request in case of LPBAM_LPTIM_CONFIG_ID with pConfNode->Config.State != ENABLE and pConfNode->Config.Mode != LPBAM_LPTIM_UE_MODE as it can be seen in the following code snippet.

  ...
  /* Check node ID */
  switch (pConfNode->NodeDesc.NodeInfo.NodeID)
  {
    /* LPBAM LPTIM Update Period node ID */
    case LPBAM_LPTIM_CONFIG_ID:
    {
      /* Get control register value */
      dummy = pConfNode->pInstance->CR;

      /* Check LPTIM state */
      if (pConfNode->Config.State == ENABLE)
      {
        /* Set LPTIM update event request */
        pDescInfo->Request = DMA_REQUEST_SW;

        /* Set LPTIM state */
        dummy |= LPTIM_CR_ENABLE;

        /* Check LPTIM start mode update */
        if (pConfNode->Config.UpdateStartMode == ENABLE)
        {
          if (pConfNode->Config.StartMode == LPBAM_LPTIM_START_SINGLE)
          {
            /* Configure LPTIM to start in single mode */
            dummy |= LPTIM_CR_SNGSTRT;
          }
          else
          {
            /* Configure LPTIM to start in continuous mode */
            dummy |= LPTIM_CR_CNTSTRT;
          }
        }
      }
      else
      {
        /* Set LPTIM state */
        dummy &= ~(LPTIM_CR_ENABLE);
    	
        /* Check LPTIM mode */
        if (pConfNode->Config.Mode == LPBAM_LPTIM_UE_MODE)
        {
          /* Check LPTIM instance */
          if (pConfNode->pInstance == LPTIM1)
          {
            /* Set LPTIM1 update event request */
            pDescInfo->Request = LPDMA1_REQUEST_LPTIM1_UE;
          }
          else
          {
            /* Set LPTIM3 update event request */
            pDescInfo->Request = LPDMA1_REQUEST_LPTIM3_UE;
          }
        }
      }

      /* Set value to be written */
      *pConfNode->NodeDesc.pSrcVarReg = dummy;

      /* Set DMA source address */
      pDescInfo->SrcAddr  = (uint32_t)pConfNode->NodeDesc.pSrcVarReg;
      /* Set DMA destination address */
      pDescInfo->DstAddr  = lptim_descitem_tbl[pConfNode->NodeDesc.NodeInfo.NodeID].RegOffset +
                            (uint32_t)pConfNode->pInstance;
      /* Set DMA data size */
      pDescInfo->DataSize = lptim_descitem_tbl[pConfNode->NodeDesc.NodeInfo.NodeID].RegDataSize;

      break;
    }
    ....

Later code uses Request leading to undefined behavior. The fix that worked for me was adding

      ...
      else
      {
        
        pDescInfo->Request = DMA_REQUEST_SW;

        /* Set LPTIM state */
        dummy &= ~(LPTIM_CR_ENABLE);
      ...

essentially this problem occurred when adding a lptim stop node with "not from update event detection" in cubemx lpbam scenario.

Lenguaje dominante
C
Estrellas
184
Forks
94
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de STMicroelectronics/STM32CubeU5

Todos los issues de STMicroelectronics/STM32CubeU5

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.