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
<끝>
'▶ STM32 > Peripheral' 카테고리의 다른 글
GPDMA 설정 및 예제 (0) | 2024.05.03 |
---|---|
STM32G4 최대 시스템 클럭 170MHz 설정 방법 (0) | 2024.03.30 |
STM32 Flash Memory에 대한 이야기 (0) | 2024.03.25 |
UART(USART) Printf - HAL & Polling (2) (0) | 2024.03.17 |
STM32의 자체 ADC 에러 (0) | 2024.03.09 |