Освоил STM32 за неделю, имея кое какой опыт программирования PIC и AVR. Главное победить страх и понять суть этого камня. А суть весьма проста: по-умолчанию ничего не работает. Совсем ничего.
Хотим чтобы заработало - активируем соответствующий модуль. Конфигурируем его так как нам надо, запускаем. Забирам/отправляем в/из данные.
Если модуль привязан к конкретным ногам, активируем эти ноги на цифровой или аналоговый режим.
Дописываем рабочий код, который чтото делает полезное, и тогда все работает.
Очень полезно раскурить ДМА (DMA) и принцип его работы (простейший). А работает он проще простого. Указываем ему откуда брать, куда складывать, какого размера данные. В источнике данных указываем какой канал ДМА дергать, чтобы он очнулся и переслал данные именно в этот момент. Скажем АЦП дергает контроллер ДМА, тот очухивается и из АЦП пересылает данные в память автоматом. И так по кругу без конца.
Я сперва целый день тупил, нифига не понимая что и куда. Потом неожиданно прозрел и все стало проще велосипеда.
В освоении очень помогли:
- STM32F0Discovery
- CoCox 1.7.7 (вторую версию фтопку, только 1.7.7) + GNU Toolchain. Мегасвязка с отличный интерфейсом и мощной автоматикой-помогайкой в кодописании
- MicroXplorer и его новая версия CubeMX. Обе по своему полезны
- http://easystm32.ru/ - сайт уже не работает, смотреть на WebArchive.
Все. 7 дней и у меня на столе крутится система под реальную задачу с работающим ЦАП и АЦП на ДМА + LCD с управлением энкодером и отладкой в консоли через Semihosting