Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

possible error in stm32_ll_lpbam.c

Đang mở
#65 9 bình luận 0 reaction 1 người được giao Xem trên GitHub

@MKISTM đang làm issue này rồi.

Từ ngày 8/5/2026.

  • #73 của @94xhn — đã đóng, không merge
  • #74 của @94xhn — đang mở

Đánh giá

Issue này chưa được đánh giá.

Mô tả

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.

Ngôn ngữ chính
C
Star
184
Fork
94
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của STMicroelectronics/STM32CubeU5

Tất cả issue của STMicroelectronics/STM32CubeU5

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.