Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76

не срабатывают прерывания Alarm будильника RTC

04.03.2021, 17:00. Показов 1681. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пытаюсь разобраться с RTC в NUCLEO-STM32l476RG. Написал тестовый исходник в котором настраиваю SystemClock, RTC. Устанавливаю будильник на 10 секунд вперед. Календарь запутился, время изменятся, но будильник не срабатывает.
Инициализация RTC.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
static void MX_RTC_Init(void)
{
    /** Initialize RTC Only */
    __HAL_RCC_RTC_ENABLE();
 
    hrtc.Instance = RTC;
    hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
    hrtc.Init.AsynchPrediv = 127;
    hrtc.Init.SynchPrediv = 255;
    hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
    hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
    hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
    hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
 
    if (HAL_RTC_Init(&hrtc) != HAL_OK)
    {
        Error_Handler();
    }
 
    /** Initialize RTC and set the Time and Date*/ 
    sTime.Hours = 10;
    sTime.Minutes = 0;
    sTime.Seconds = 0;
    sTime.DayLightSaving =  RTC_DAYLIGHTSAVING_NONE;;
    sTime.StoreOperation = RTC_STOREOPERATION_RESET;
 
    if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
    {
        Error_Handler();
    }
 
    /* Set Date: Monday December 31th 2020 */   
    sDate.Year = 21;
    sDate.Month = 02;
    sDate.Date = 20;
    sDate.WeekDay = RTC_WEEKDAY_MONDAY;
 
    if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
    {
        Error_Handler();
    }
 
    /*** Registraion function of Event AlarmA and AlarmB*/
 
    if (HAL_RTC_RegisterCallback(&hrtc, HAL_RTC_ALARM_A_EVENT_CB_ID, (pRTC_CallbackTypeDef)AlarmAEventCallback) != HAL_OK)
    {
        Error_Handler();
    }
    if (HAL_RTC_RegisterCallback(&hrtc, HAL_RTC_ALARM_B_EVENT_CB_ID, (pRTC_CallbackTypeDef)AlarmBEventCallback) != HAL_OK)
    {
        Error_Handler();
    }   
    __HAL_RTC_ALARM_ENABLE_IT(&hrtc, RTC_IT_ALRA | RTC_IT_ALRB);
}
В stm32l4xx_it.c

C
1
2
3
4
void RTC_Alarm_IRQHandler(void)
{
    HAL_RTC_AlarmIRQHandler(&hrtc);
}
В stm32l4xx_hal_msp.c

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{
    if (hrtc->Instance == RTC)
    {
        __HAL_RCC_RTC_ENABLE();
        HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 5, 0);
        HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
    }
 
}
 
void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
{
    if (hrtc->Instance == RTC)
    {
        HAL_NVIC_DisableIRQ(RTC_Alarm_IRQn);
        __HAL_RCC_RTC_DISABLE();
    }
}
Установка будильника

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
void MX_SetAlarm_BIN(void)
{
    RTC_AlarmTypeDef nowAlarm = { 0 };
    RTC_DateTypeDef sDate = { 0 };
    RTC_TimeTypeDef sTime = { 0 };
        
 
    if (HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
    {
        Error_Handler();
    }
    if (HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
    {
        Error_Handler();
    }
 
    nowAlarm.Alarm = RTC_ALARM_A;
    nowAlarm.AlarmTime.Hours = 10;
    nowAlarm.AlarmTime.Minutes = 0;
    nowAlarm.AlarmTime.Seconds = 10;
    nowAlarm.AlarmTime.SubSeconds = 0;
    nowAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
    nowAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
 
    nowAlarm.AlarmMask = RTC_ALARMMASK_NONE;
    nowAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_NONE;
    nowAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
    nowAlarm.AlarmDateWeekDay = 20;
    
    if (HAL_RTC_SetAlarm_IT(&hrtc, &nowAlarm, FORMAT_BIN) != HAL_OK)
    {
        /* Initialization Error */
        Error_Handler();
    }
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2021, 17:00
Ответы с готовыми решениями:

rtc alarm на asus t100
здравствуйте имеется планшет asus t100, чипсет beytrail, на котором установлена debian 10. при попытке вызова, например, такой...

C# - BIOS, CMOS и RTC Alarm
Доброго времени суток. Захотелось мне соорудить приложение, которое позволяло бы ЗАПУСКАТЬ компьютер из ВЫКЛЮЧЕННОГО состояния. В...

Установка будильника.. работа с RTC CMOS RAM
необходимо получить значение текущего времени и задать значение будильника через 3 часа 28 мин от текущего..прошу помощи..буду очень...

2
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76
05.03.2021, 00:29  [ТС]
Среда разработки похоже глюкнула. Попробую пересоздать проект. Других идей пока нет.
0
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76
07.03.2021, 14:47  [ТС]
Спасибо. Сам решил - принудительный сброс флагов прерываний.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2021, 14:47
Помогаю со студенческими работами здесь

ASRock AB350M Pro4 не работает RTC Alarm Power On
Извиняюсь если не в тот раздел закинул. Но думаю проблема как всегда в шиндовс(от слово шиза). Выставил everyday. Время 09:58....

как добавить интервал времени для установки Alarm RTC
Доброго времени суток. Такой вопрос. Контроллер stm32l4xx. В программе использую RTC с Alarm Calendar. Необходимо установить время...

MCP79411 не генерирует прерывания от Alarm! Нужна помощь!
Здравствуйте. Необходимо чтобы часы реального времени MCP79411 генерировали прерывание на ноге MFP каждые 10 мин., но ждать так долго для...

Не срабатывают прерывания
Привет. Написал программу для измерения длины импульса, прерывания должны срабатывать при приходе переднего фронта (INT0) и заднего...

Прерывания ATxmega256a3U не срабатывают
Здравствуйте. Уже не первый день пытаюсь понять, почему не срабатывает прерывание. Все работает, однако если включить TCC и повесить на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru