January 15th, 2017

Костерок

USART через DMA на STM32F042

Добавил в коллекцию еще один сниппет.
Казалось бы, в USART через DMA ничего особенного нет, но по сравнению с STM32F103 у нулевой серии есть замечательное прерывание USART: "character match".
В этом примере DMA организует прием-передачу данных (причем на прием стоит двойная буферизция), а прерывание character match позволяет определить, было ли окончание строки. Если было, то выставляется соответствующий флаг и буфера меняются местами; если же не было, то при переполнении буфера DMA прием возобновляется в тот же буфер и выставляется флаг overflow.
Принятая строка возвращается обратно "задом наперед", а каждые ~5 секунд выводится еще и надпись "dummy text". Например, если написать
Привет
Аргентина манит негра
1234567
на выходе получим:
тевирп
dummy text
арген тинам анитнегрА
dummy text
7654321
promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
Костерок

Мистика…

Уже полдня бьюсь с АЦП через ПДП. На стадии вывода значений возникают непонятные зависания. Что только не делал. И вдруг: бамц, озарение! Если убрать математические операции (деление, умножение, взятие остатка), никакого зависания нет. А как только я пытаюсь отобразить значение, вылезает ошибка.

То ли микроконтроллер дохлый, то ли какая-то хитрость есть в том, чтобы STM32F042 научить целочисленной арифметике кроме сложения и вычитания...