RTC MASK 와 WDSEL 설정

RTC Alarm 설정을 하기 위해선 아래와 같은 CubeMX에서 설정을 해주어야 합니다. 그런데 요기서 Alarm Date Week Day Sel이라는 파라메터가 있는데 뭔지 좀 헷갈립니다.

 

우선 Date로 설정하고 Generate 되어 있는 Code에서 해당 변수를 확인해 보았습니다.

  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;

 

sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE; 

이 부분은데 이는 RTC_ALRMAR의 WDSEL 비트의 설정입니다.

 

 

다른 어플리케이션 노트에 보니 아래와 같이 표시되어 있습니다.

 

"WDSEL = 0인 경우 모든 경우가 유사합니다. 다만 알람 마스크 필드는 요일이 아닌 일 번호와 비교하고, MSKx 비트는 0000b로 설정해야 합니다."

 

네 맞습니다. WDSEL을 0으로 하면 알람의 세팅이 날짜로 세팅이 가능하고 1로 세팅하며 요일로 세팅이 가능하다는 말이었습니다. 만약 매달 17일에 알람을 하고 싶으면 아래와 같이 세팅하여야 합니다.

  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
  sAlarm.AlarmDateWeekDay = 0x17;

 

만약 요일로 하고 싶으면 아래와 같이 설정하면 됩니다.

  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY;
  sAlarm.AlarmDateWeekDay = RTC_WEEKDAY_TUESDAY;

 

추가로 Mask 설정에 따라 알람의 방법을 달리 할 수 있습니다. 세팅되어 있는 MSKx에 따라 시간 혹은 날짜 알람을 무시하게 됩니다.

 

https://github.com/soloungos/stm32g431_stop_mode_test/tree/master

 

GitHub - soloungos/stm32g431_stop_mode_test: RTC and Stop mode test for STM32

RTC and Stop mode test for STM32. Contribute to soloungos/stm32g431_stop_mode_test development by creating an account on GitHub.

github.com

 

<끝>