Старт ARM. Часы реального времени RTC. HAL

Доброе время суток, продолжаем изучать микроконтроллеры ARM stm32f4, сегодня речь пойдет о часах реального времени RTC, а поставим мы себе задачу по времени переключать светодиод и сделаем себе будильник по которому нехотя будем вставать утром. И как всегда мы это будет делать на HAL-е, и тут нас ждет 2 бага со стороны хала. Начнем по порядку:
1. RTC имеет Alarm A и Alarm B (EXTI line 17)
2. RTC может проснуться по линии PA0(EXTI line 20)
3. RTC может сработать по метке (EXTI line 21)
Тактирование для RTC можно задать с помощью:
1. LSE – внешний часовой кварцевый генератор 32.738 kHz
2. LSI – внутренний генератор на 32 kHz
3. HSE – внешний кварцевой генератор для работы микроконтроллера, вход для RTC это частота HSE/Пред делитель.
И переходим непосредственно к самой программе.
stm32f4xx_hal_msp.c

main.c

1-ый баг необходимо добавить после MX_RTC_Init(), следующую строку
if(!(*(volatile uint32_t *) (BDCR_RTCEN_BB)))__HAL_RCC_RTC_ENABLE();
2-ой баг в файле smt32f4xx_hal_rtc.c необходимо закомментировать данную строку
//sTime->SubSeconds = (uint32_t)(hrtc->Instance->SSR);
Будильник делается аналогично, для этого в функции MX_RTC-Init() ставим текущее время и выставляем время через которое будильник должен зазвенеть (например через 10 секунд).

main.c

stm32f4xx_it.c

Так же добавляем в MX_GPIO_Init() следующие строки кода


В следующий раз поговорим про энергосберегающий режим, на сегодня все, всем пока, увидимся на просторах mcu.by.

Отправить ответ

8 Комментарий на "Старт ARM. Часы реального времени RTC. HAL"

Уведомлять о
avatar
Сортировать по:   Самый новый | Самый старый | Наиболее проголосовали
Михаил
Гость

Здравствуйте! Недавно для себя начал изучать STM32F429I-DISCO и соответственно программирование , вот хочу подключить через HAL часы реального времени DS3231 (интерфейс I2C).
Подскажите как можно это все подключить.
Хочу сделать светильник с будильником!
Среда разработки EmBitz 0.42
Заранее благодарю за ответ!

RusikOk
Гость

как проверить шли часы до нашей инициализации от батарейки или нет? чтобы не выставлять их при каждом включении прибора

wpDiscuz