STM32G0 WS2812 микролиба

Proteus

✩✩✩✩✩✩✩
3 Янв 2023
14
1
Подключал адресный диод к STM32G0 , случайно сочинил мини либу. У меня она просто лежать будет, может кому пригодится.
По идее на всех нулевых линейках STM должна работать. Сам только прикрутил, пока не очень уверен в стабильности.

Надо
  • закинуть исходник дерево проекта
  • .txt из названия файла - убрать
  • прописать в первой строке частоту (16 32 64)

В Си объявить:
C++:
extern void ws2812_send(uint32_t gpio, uint32_t pin, uint32_t color);
использовать

C++:
__disable_irq();
for(size_t n=0; n<leds_count; n++)  ws2812_send(GPIOA, pin , color);
__enable_irq();
ну или как-то похитрее
C++:
void leds_send_(uint32_t (*fun)())
{
    __disable_irq();
    for(size_t n=0; n<leds_count; n++)    ws2812_send(GPIOA, GPIO_PIN_3 , fun());
    __enable_irq();
}

void leds_rand()
{
    static const uint32_t colors[4]={0xFF,0xFF00,0xFF0000};
    uint32_t fun() {
        return colors[rand()%3];
    }
    leds_send_(fun);
    HAL_Delay(30);
}
 

Вложения