[uquote="Oxford",url="/forum/viewtopic.php?p=3906509#p3906509"]Настройка порта там три строки, остальное алгоритмы.[/uquote]
Давай я лучше покажу как у меня тактирование для H750 настраивается. Там три 3-х канальных PLL, на вход подается частота с HSE/CSI/HSI, для последнего еще делители могут быть. И умножитель там сдвоенный, один принимает частоты в диапазоне 1..2 MHz, а на выходе будут 150..420 MHz, у второго на входе 2..16 MHz, а на выходе от 192 до ~1400, если разгонять. Выбрать какой из них использовать с учетом того, что на трех каналах могут быть разные частоты не так и просто. А каналов нужно много, даже SPI1/2/3 нельзя затактировать от APB, только PLL или HSE/CSI/HSI, то там частоты обычно небольшие. LTDC - только PLL, SDMMC - только PLL и т.д.... Другими словами тут все значительно сложнее, чем было, например, на F4, где обычно хватало одного канала одного PLL. В итоге был написан ряд шаблонных классов:
Код: Выделить всё
using pll1 = Pll1<960, 2, 20>; // P: 480, Q: 48
using pll2 = Pll2<200, 1, 4>; // P: 200, Q: 50
using pll3 = Pll3<160, 0, 0, 4>; // R: 40
Plls<PllSrc::Hse, pll1, pll2, pll3>::init();
Rcc::switchToPll<pll1, AhbPresc::_2>();
Эти 5 строк делают все, включают нужные генераторы, настраивают все PLL с проверкой входных параметров, задают латентность флеша и также настраивается Voltage Regulator, чтобы питания хватало для заданной частоты. За сколько занятий сможешь научить новичка настраивать это все правильно?
А WS2812B у меня давно работают, тому же
Dimon456 было все разжевано, иначе у него до сих пор работало бы с SPI и без DMA. Причем идея использовать SPI ведь тоже не его, а позаимствована из кода
ARV, зато просить у меня в личке помощи и потом называть мои советы тупыми, это он может
