Обновлены шапки и по мелочи

This commit is contained in:
2025-12-28 14:06:19 +03:00
parent f3e76e105a
commit 8b930ebe12
12 changed files with 523 additions and 251 deletions

View File

@@ -14,6 +14,9 @@
******************************************************************************
* @attention
*
* Этот драйвер должен быть инициализирован ПЕРВЫМ в программе, до любой другой периферии.
* Неправильная настройка тактирования может привести к неработоспособности всего МК.
*
* Использование этого драйвера предполагает наличие корректных настроек:
* - Определены константы SYSCLK_CORE_CLOCK_MHZ и SYSCLK_Oscil_Type в periph_config.h
* - Определен тип системного тика SYSCLK_TickType в periph_config.h
@@ -24,37 +27,44 @@
##### Как использовать этот драйвер #####
==============================================================================
1. Настройка периферии (periph_config.h):
(+) Определить SYSCLK_CORE_CLOCK_MHZ - частота ядра в МГц (например, 100)
(+) Определить SYSCLK_Oscil_Type - тип осциллятора (RCU_Oscil_OSE или RCU_Oscil_OSI)
(+) Определить SYSCLK_TickType - тип системного тика (SYSCLK_Tick_1us, SYSCLK_Tick_1ms и т.д.)
1. Настройка в periph_config.h:
(+) SYSCLK_CORE_CLOCK_MHZ - частота ядра в МГц (например, 100)
(+) SYSCLK_Oscil_Type - источник тактирования (RCU_Oscil_OSE или RCU_Oscil_OSI)
(+) SYSCLK_TickType - период системного тика (от SYSCLK_Tick_1us до SYSCLK_Tick_100ms)
2. Инициализация тактирования:
(+) sysclk_init() — обязательный вызов в начале программы
- Автоматически настраивает PLL для заданной частоты
- Настраивает SysTick для генерации системных тиков
- Обновляет SystemCoreClock
2. Инициализация (в начале main()):
(+) sysclk_init() - настраивает PLL, SysTick и счетчики времени
(+) В SysTick_Handler() вызвать sysclk_irq_handler()
3. Работа со временем:
(+) millis() — получение текущего времени в миллисекундах
(+) micros() — получение текущего времени в микросекундах
(+) sysclk_irq_handler() — обработчик прерываний SysTick (должен вызываться из SysTick_Handler)
(+) millis() - текущее время в миллисекундах (переполнение через 49 дней)
(+) micros() - текущее время в микросекундах (точность зависит от SYSCLK_TickType)
4. Система коллбеков:
(+) SYSCLK_Set_Callback() — добавление периодического коллбека
- Коллбеки автоматически вызываются в sysclk_irq_handler() с заданным периодом
- Максимальное количество коллбеков: SYSCLK_NUMB_OF_CUSTOM_CALLBACKS
4. Периодические задачи:
(+) SYSCLK_Set_Callback(func, period_ms) - регистрация функции для периодического вызова
(+) Максимум 16 функций, период должен быть >= периода системного тика
5. Настройка тактирования Периферии:
(+) АЦП: rcu_set_clock_adc(ClkSrc, ClkMHz, state)
- ClkSrc: источник тактирования (RCU_PeriphClk_OSEClk, RCU_PeriphClk_PLLClk и т.д.)
- ClkMHz: желаемая частота ADC в МГц
- state: включение/выключение тактирования
5. Настройка тактирования периферии:
(+) rcu_set_clock_adc(source, freq_mhz, enable) - для АЦП
(+) Частота АЦП не должна превышать 12.5 МГц согласно datasheet
6. Особенности работы:
(+) Системные тики работают на основе SysTick
(+) Поддерживаются различные периоды тиков от 1 мкс до 100 мс
(+) Переполнение счетчиков происходит через ~49 дней
==============================================================================
##### Особенности работы #####
==============================================================================
- Выбор SYSCLK_TickType влияет на:
- Точность micros() (при 1ms тике micros() дает значения с шагом 1000)
- Нагрузку на ЦП (1us = 1М прерываний в секунду, 100ms = 10 прерываний в секунду)
- Минимальный период коллбеков (не может быть меньше SYSCLK_TickType)
- При настройке PLL:
- Драйвер автоматически подбирает делители для заданной частоты
- Если частота недостижима - вызовется Error_Handler()
- Всегда проверяйте supported frequencies в datasheet
- Коллбеки выполняются в контексте прерывания SysTick:
- Не должны выполняться долго
- Не должны вызывать блокирующие функции
@endverbatim
******************************************************************************