Сразу предупреждаю, в STM32 я полный новичек, пока знакомлюсь.
Все чего пока добился, это моргать в кейле светодиодом на двухдолларовой плате с stm32f103c8t6.
До этого частенько писал для авр на бейсике и ассемблере, так что освоение stm32 вопрос времени.
Вопрос мой будет не столько про код, а про возможность выполнения нужного мне алгоритма переферией автономно.
Не буду скрывать, хочу без участия процессора выдавать поток данных сразу в 16 длинных линеек светодиодов WS2812B.
Для выдачи одного бита нужно на отдельном выводе сначала ~ на треть периода выставить 1, потом на треть данные, и на треть 0.
В принципе при помощи DMA данная задача реализуема, но вот этот ноль в начале и еденица в конце утроят размер буфера (и добавят неудобства работы с ним).
Поэтому возник вопрос, а можно ли как то внутренними или наружными выходами таймеров переводить (или заполнить) весь 16 битный порт GPIO в высокий и низкий уровни?
Вероятно можно было бы задействовать второй DMA для цикличной выдачи двух констант (с нулями и еденицами) в тот же порт, но думаю целый ДМА для этого жирновато.
Возможно не зная завязок и возможностей переферии я узковато мыслю, и есть более красивые решения, был бы рад услышать.