added README.md

This commit is contained in:
pavel 2026-03-30 21:42:05 +03:00
parent 2405daa4d9
commit c294e90302

View File

@ -1,3 +1,81 @@
# led
# STM32 WS2812 LED Control (TIM2 Interrupt)
Управление светодиодной лентой по SPI с помощью платы разработки jzf407vet6 контроллера stm32
## 📘 Описание
Данный проект демонстрирует управление адресной светодиодной лентой
WS2812 с использованием таймера TIM2 на микроконтроллере STM32F407VET6.
При каждом срабатывании таймера: - переключается GPIO (индикатор
работы) - гасится вся лента - зажигается один светодиод - цвет
выбирается циклически - создаётся эффект "бегущего огня"
------------------------------------------------------------------------
## ⚙️ Основная функция
``` c
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2)
{
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);
for (int i = 0; i < LED_COUNT; i++)
{
setLED(i, 0, 0, 0);
}
setLED(pos,
colors[pos % COLOR_COUNT][0],
colors[pos % COLOR_COUNT][1],
colors[pos % COLOR_COUNT][2]);
WS2812_Send();
pos++;
if (pos >= LED_COUNT)
pos = 0;
}
}
```
------------------------------------------------------------------------
## 🧠 Логика работы
1. Проверка таймера (TIM2)
2. Переключение пина (индикация)
3. Очистка всех светодиодов
4. Установка одного активного светодиода
5. Отправка данных в WS2812
6. Смещение позиции
------------------------------------------------------------------------
## 🎯 Результат
Создаётся визуальный эффект: - один "бегущий" светодиод - автоматическая
смена цветов - плавное зацикливание
------------------------------------------------------------------------
## 🧩 Используемое оборудование
- Микроконтроллер: STM32F407VET6 (Cortex-M4, 168 MHz)
- Светодиодная лента: WS2812
- Таймер: TIM2
- GPIO: GPIOE PIN 15
------------------------------------------------------------------------
## 🖼️ Плата разработки
https://giteadocker2.fvds.ru/pavel/led/src/branch/main/jz%20f407vet6.png
------------------------------------------------------------------------
## 🚀 Примечания
- Убедитесь, что таймер TIM2 настроен и запущен с прерыванием
- WS2812 требует точного тайминга --- обычно используется DMA + PWM
- Частота обновления зависит от настроек таймера