В идеале вы должны читать-изменять-писать, не гарантировать успех, когда вы переходите на новый чип с разными битами, вы все равно меняете свой код. Я видел продавцов, где запись нулей в зарезервированные биты не удалась, когда они обновили чип, и код пришлось потрогать. Поэтому никаких гарантий нет. Самая большая подсказка заключается в том, что в коде вендоров вы видите регистр или набор, которые явно читают-модифицируют-пишут или явно пишут. Это могут быть разные разработчики, которые пишут разные разделы примера или есть регистр в том периферийном, который является чувствительным, имеет недокументированный бит и ему требуется чтение-изменение-запись.
На чипах, над которыми я работаю, я удостоверяю, что недокументированные (для клиента), но не неиспользуемые биты отмечены каким-то образом, чтобы выделяться из других неиспользуемых битов. Обычно мы отмечаем неиспользуемые/зарезервированные биты как ноль, а эти другие биты получают имя и должны писать эту маркировку значений. Не все вендоры делают это.
Суть в том, что нет никакой гарантии, предположим, что вся документация и примеры программ имеют ошибки, и вы должны взломать свой путь, чтобы выяснить, что правильно и что не так.Независимо от того, какой путь вы принимаете (чтение-изменение-запись, запись нулей и т. Д.), Вы будете время от времени ошибаться и должны повторно выполнить код в соответствии с аппаратным изменением. Я настоятельно рекомендую, чтобы, если у продавца есть идентификатор чипа, то ваше программное обеспечение считывает этот идентификатор, и если это идентификатор, с которым вы не протестировали ваш код, объявите о сбое, а не пропустите эту часть. При тестировании продукции задолго до того, как клиент увидит продукт, будет обнаружено изменение детали, и программное обеспечение будет задействовано в понимании причины смены детали, разрешение, являющееся альтернативной частью, несовместимо и отклонено или программное обеспечение изменяется и т. Д.
Какой чип вы используете точно? Cortex-M3 - это только ядро, потому что вы (возможно) спрашиваете об этом из-за периферийных регистров. – DipSwitch
@DipSwitch: Ну, например, я говорю о регистрах GPIO. – Randomblue
Регистры GPIO NXP, Freescale, Atmel? STM или, возможно, LPC? – jeb