Zikon (22.07.2025 20:04, просмотров: 63) ответил Бapбoc на Простите малограмотного. Есть в STM32G431 управляющий регистр 32
бита. Есть в нём битовое поле 8 бит. Менять это поле, не портя
содержимое регистра, можно только через чтение-модификацию-запись?
Или есть за пазухой у АРМА какие-нибудь фишки. Приданная мне
программист сделала в два хода -- обнуляет поле через И, потом
загружает через ИЛИ. Я только нонеча вечером глянул код и понял,
откель беда.
В наборе инструкций Cortex-M3/M4 существует семейство инструкций
LDREX/STREX, так что если адрес считывается инструкцией LDREX,
следующая инструкция STREX может записать данные по этому адресу
только в том случае, если известно, что адрес не был затронут.
Обычно это означает, что инструкция STREX выполняется успешно, если
с момента выполнения LDREX не возникало прерываний («исключений» в
терминологии ARM), и завершается неудачей в противном случае.