ArtDenis 0 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 5 августа, 2015 Опубликовано 5 августа, 2015 · Жалоба Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю? Вероятно они у Вас не в области памяти bitband. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ArtDenis 0 5 августа, 2015 Опубликовано 5 августа, 2015 · Жалоба Нет. Путём научного тыка выяснилось, что когда обращаешься к регистрам 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 Для регистров другой периферии такого не наблюдается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться