Цитата(scifi @ Feb 2 2014, 12:04)

Отличный вариант, я бы так и сделал. Конечно, прерывание или запрос DMA можно получать и в режиме ШИМ. Проще, мне кажется, и не придумать.
Придумать
Это получается: таймер+DMA и ещё + 48 байт(слов?) в ОЗУ.
ТС-у ведь нужен цифровой сигнал: 0, 1, 0, 1, .... как я понял.
Не знаком с периферией STM32, но думаю проще сделать по-другому:
SPI(master)+DMA. Если не понятно, поясню:
Настраиваем SPI на битовую частоту 48*2 кГц.
DMA настраиваем в flip-flop режиме (первый буфер - передача 6 раз байта 0x55, второй буфер - передача 6 раз байта 0 (или 0xFF по желанию)).
Сигнал получаем с MOSI.
Пересылок по шине в 8 раз меньше, а так как у ТС CPU и так загружен (>80%) то это важно. Если использовать 16-битный режим SPI, то можно ещё в 2 раза уменьшить кол-во пересылок.
К тому-же - при связке таймер+DMA, так как состояние пина должно быть изменено в тот момент, когда таймер формирует событие, то любые задержки из-за загрузки шины будут также
приводить к дрожанию фронтов сигнала. В связке-же SPI+DMA, в SPI имеется буферизация, поэтому такая связка гораздо устойчивее к загрузке шины.
Всё