Files
Lamps/Core/Inc/segment_tim.h
2026-04-12 10:50:01 +03:00

66 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef SEGMENT_H
#define SEGMENT_H
#include <stdint.h>
#include "tim.h"
// Структура для хранения времени
typedef struct {
uint8_t hours;
uint8_t minutes;
uint8_t seconds;
} TimeStruct;
// Структура для управления сегментом
typedef struct {
TIM_HandleTypeDef *htim; // Указатель на таймер
uint32_t channel; // Канал (TIM_CHANNEL_1, TIM_CHANNEL_2, etc.)
uint8_t isComplementary; // 1 - комплементарный канал (CHxN), 0 - обычный
// инициализируется само
uint8_t isActive; // активен ли сегмент, 0 - выключен, 1 - шимиться
uint8_t Duty; // скваэнлсть с которой надо шимить сегмент
__IO uint32_t *ccmr_ptr; // указатель на соответствующий CCMR регистр
uint8_t ccmr_shift; // сдвиг в регистре CCMR
} SegCtrl_t;
// ==================== НАСТРОЙКА ТАЙМЕРОВ ДЛЯ СЕГМЕНТОВ ====================
// Сегмент A
#define SEG_A_CONFIG {&htim1, TIM_CHANNEL_3, 1}
// Сегмент B
#define SEG_B_CONFIG {&htim3, TIM_CHANNEL_1, 0}
// Сегмент C
#define SEG_C_CONFIG {&htim2, TIM_CHANNEL_2, 0}
// Сегмент D
#define SEG_D_CONFIG {&htim4, TIM_CHANNEL_1, 0}
// Сегмент E
#define SEG_E_CONFIG {&htim4, TIM_CHANNEL_2, 0}
// Сегмент F
#define SEG_F_CONFIG {&htim4, TIM_CHANNEL_3, 0}
// Сегмент G
#define SEG_G_CONFIG {&htim4, TIM_CHANNEL_4, 0}
// ==================== ПУБЛИЧНЫЕ ФУНКЦИИ ====================
// Инициализация модуля
void Segment_Init(void);
// Установка времени для отображения
void Segment_SetTime(uint8_t hours, uint8_t minutes, uint8_t seconds);
// Установка глобальной яркости (0-100%)
void Segment_SetBrightness(uint8_t percent);
// Основная функция обновления дисплея (вызывается из прерывания таймера)
// Внутри сама рассчитывает когда переключать разряд
void Segment_Process(void);
#endif