Цитата(Dr.Alex @ May 7 2015, 17:26)

You'd better try STMcube HAL. It works (with some issues time to time discussed here).
Also you can try Chibios alone with its HAL.
Подобное творение - STMcube HAL, можно рассматривать исключительно как референс, что я и делал, но ответов на многочисленные вопросы, никак не раскрытые в Reference Manual оно не дает.
Chibios тоже использую, но предпочитаю освоить "материальную часть", а не полагаться на других.
Пример:
Код
#if (defined(STM32F4XX) || defined(STM32F2XX))
/* Wait until DMA channel enabled to be sure that all data transferred.*/
/***********************************************/
while (sdcp->dma->stream->CR & STM32_DMA_CR_EN);
/***********************************************/
/* DMA event flags must be manually cleared.*/
dmaStreamClearInterrupt(sdcp->dma);
SDIO->ICR = STM32_SDIO_ICR_ALL_FLAGS;
SDIO->DCTRL = 0;
osalSysUnlock();
/* Wait until interrupt flags to be cleared.*/
/*while (((DMA2->LISR) >> (sdcp->dma->ishift)) & STM32_DMA_ISR_TCIF)
dmaStreamClearInterrupt(sdcp->dma);*/
#else
Ну да, прекрасный образчик лупа: пусть остальные занимаются прерываниями пока мы ждем-с...
И, кстати, а зачем флаги ошибок проверять, когда можно все почистить?
Может у меня не свежая версия или ну фантазии, например, не хватает...
Могу и другие примеры привести...
Если у Вас есть код/образчик многоблоковой записи через DMA, буду очень признателен за возможность ознакомиться: есть вопросы с очередностью операций и, особенно, с флагом FEIE.
Спасибо за ответ.
Сообщение отредактировал pitt - May 8 2015, 00:21