cancel
Showing results for 
Search instead for 
Did you mean: 

Can not set tamper trigger LOWLEVEL in stm32g4xx_hal_rtc_ex.c

andreasg
Associate

In the file "stm32g4xx_hal_rtc_ex.c" in the function "HAL_RTCEx_SetTamper_IT(...)" there is an if-statement:

 

  if (sTamper->Trigger != RTC_TAMPERTRIGGER_RISINGEDGE)
  {
    tmpreg |= (sTamper->Tamper << TAMP_CR2_TAMP1TRG_Pos);
  }

 

And the corresponding .h file has:

 

#define RTC_TAMPERTRIGGER_RISINGEDGE        0x00U  /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */
#define RTC_TAMPERTRIGGER_FALLINGEDGE       0x01U  /*!< Warning : Filter must be RTC_TAMPERFILTER_DISABLE */
#define RTC_TAMPERTRIGGER_LOWLEVEL          0x02U  /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */
#define RTC_TAMPERTRIGGER_HIGHLEVEL         0x03U  /*!< Warning : Filter must not be RTC_TAMPERFILTER_DISABLE */

 

This becomes an issue if configuring for RTC_TAMPERTRIGGER_LOWLEVEL.

The issue seems to be that the code inside the if-statement sets the TAMP1TRG bit to 1 if true. Since the defines for the different triggers are numbered from 0 to 3, TAMP1TRG will always be 1 so long as we are not using RISINGEDGE. However, to use LOWLEVEL, we want TAMP1TRG to be set to 0.

1 REPLY 1
Jacob WOODRUFF
ST Employee

Hi All,

 

This post has been escalated to the ST Online Support Team for additional assistance. We'll contact you directly.

 

Regards,
Jake

ST Support