Запуск RTC и настройка будильника: различия между версиями

Материал из MIK32 микроконтроллер
(Новая страница: «В примере будут записаны данные в основной массив OTP, тестовый столбец и тестовую строку,...»)
 
Нет описания правки
Строка 1: Строка 1:
В примере будут записаны данные в основной массив OTP, тестовый столбец и тестовую строку, после чего они будут считаны.
В примере будут запущен таймер RTC и настроен будильник.


== Работа с конфигуратором (В разработке) ==
== Работа с конфигуратором (В разработке) ==
Для начала настроем в конфигураторе тактирование mik32, например, от внешнего кварца 32МГц. Затем настроем делители шины. Так как OTP тактируется от шины APB_M_CLK, то зададим делители AHB_DIV и APB_M_DIV. В данном примере оставим делители по умолчанию. В итоге вкладка с тактированием должна выглядеть так:
Для начала настроем в конфигураторе тактирование mik32, например, от внешнего кварца 32МГц. Затем настроем делители шины. Так как RTC тактируется от шины APB_M_CLK, то зададим делители AHB_DIV и APB_M_DIV. В данном примере оставим делители по умолчанию. В итоге вкладка с тактированием должна выглядеть так:


(Картинка тактирования из конфигуратора. В работе)
(Картинка тактирования из конфигуратора. В работе)


Затем перейдем к настройке самого OTP. Для этого откроем вкладку OTP и нажмем включить.
Затем перейдем к настройке самого RTC. Для этого откроем вкладку RTC и нажмем включить.
[[Файл:Рисунок 1 - Настройки RTC в конфигураторе.png|мини|Рисунок 1 - Настройки RTC в конфигураторе]]
Выберем тактирование от "внешнего осциллятора OSC32K". Во вкладке дата и время RTC нажмем кнопку взять дату с компьютера. Все поля автоматически заполнятся. При заполнении полей вручную следует вводить корректную дату.


После этого появится одна настройка - режим чтения. При выборе "чтения в 2 этапа" происходит автоматическое инкрементирование адреса OTPA после чтения, вводятся такты ожидания интерфейса APB. При выборе "чтения в 3 этапа" автоматического инкрементирования OTPA не происходит, такты ожидания не вводятся, но требуется опрос флага готовности BSY. Выберем, например, чтение в 3 этапа.
Следующая вкладка "регистры RTC". Здесь задаются значения регистров общего назначения REG0-REG15. Они могут использоваться в произвольных целях. Регистры располагаются в батарейном домене и сохраняют свое значение при отключении системного питания и при внешнем сбросе. В данном примере в них ничего записываться не будет.
[[Файл:Рисунок - Настройки будильника RTC в конфигураторе.png|мини|Рисунок - Настройки будильника RTC в конфигураторе]]
В самом начале настроек нажмем галочку "включить будильник". После этого появится еще одна вкладка с настройками даты и времени будильника. Запишем все поля будильника как во времени и дате RTC, но секунды напишем на 5 больше.


В итоге настройки таймера в конфигураторе должны выглядеть примерно так:
В итоге настройки RTC в конфигураторе должны выглядеть как на рисунках.


(Объяснение работы с конфигуратором. В разработке)
(Объяснение работы с конфигуратором. В разработке)


Нажимаем кнопку генерации. В итоге у нас появится проект для PlatformIo. Далее работа идет в visual studio code.
Нажимаем кнопку сохранения и генерации. В итоге у нас появится проект для PlatformIo. Далее работа идет в visual studio code.


== Использование библиотеки HAL_RTC ==
== Использование библиотеки HAL_RTC ==
В сгенерированном проекте в файле main.c должна быть функция OTP_Init, в которой будут заданы настройки для OTP. Выглядит она так:
В сгенерированном проекте в файле main.c должна быть функция OTP_Init, в которой будут заданы настройки для OTP. Выглядит она так:

Версия от 12:01, 15 февраля 2023

В примере будут запущен таймер RTC и настроен будильник.

Работа с конфигуратором (В разработке)

Для начала настроем в конфигураторе тактирование mik32, например, от внешнего кварца 32МГц. Затем настроем делители шины. Так как RTC тактируется от шины APB_M_CLK, то зададим делители AHB_DIV и APB_M_DIV. В данном примере оставим делители по умолчанию. В итоге вкладка с тактированием должна выглядеть так:

(Картинка тактирования из конфигуратора. В работе)

Затем перейдем к настройке самого RTC. Для этого откроем вкладку RTC и нажмем включить.

Рисунок 1 - Настройки RTC в конфигураторе

Выберем тактирование от "внешнего осциллятора OSC32K". Во вкладке дата и время RTC нажмем кнопку взять дату с компьютера. Все поля автоматически заполнятся. При заполнении полей вручную следует вводить корректную дату.

Следующая вкладка "регистры RTC". Здесь задаются значения регистров общего назначения REG0-REG15. Они могут использоваться в произвольных целях. Регистры располагаются в батарейном домене и сохраняют свое значение при отключении системного питания и при внешнем сбросе. В данном примере в них ничего записываться не будет.

Рисунок - Настройки будильника RTC в конфигураторе

В самом начале настроек нажмем галочку "включить будильник". После этого появится еще одна вкладка с настройками даты и времени будильника. Запишем все поля будильника как во времени и дате RTC, но секунды напишем на 5 больше.

В итоге настройки RTC в конфигураторе должны выглядеть как на рисунках.

(Объяснение работы с конфигуратором. В разработке)

Нажимаем кнопку сохранения и генерации. В итоге у нас появится проект для PlatformIo. Далее работа идет в visual studio code.

Использование библиотеки HAL_RTC

В сгенерированном проекте в файле main.c должна быть функция OTP_Init, в которой будут заданы настройки для OTP. Выглядит она так: