ArtDenis 0 Posted August 4, 2015 · Report post Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю? Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted August 5, 2015 · Report post Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю? Вероятно они у Вас не в области памяти bitband. Quote Ответить с цитированием Share this post Link to post Share on other sites
ArtDenis 0 Posted August 5, 2015 · Report post Нет. Путём научного тыка выяснилось, что когда обращаешься к регистрам DMA через bit banding, нужно обязательно читать или писать двойное слово (4 байта). Чтение/запись любого другого количества байт приводит HardFault. Т.е. для примера: // Включаем half transfer interrupt (CCR, DMA_CCR_HTIE) *(volatile uint8_t*) 0x424c0108 = 1; // HardFault *(volatile uint16_t*)0x424c0108 = 1; // HardFault *(volatile uint32_t*)0x424c0108 = 1; // OK Для регистров другой периферии такого не наблюдается. Quote Ответить с цитированием Share this post Link to post Share on other sites