Я там листинги поправил немножко (забыл указатель инициализировать). Даже в этом примере код растет на две инструкции. Если учесть, что в первом случае нужно запрещать прерывания - то так на то и выходит. А на самом деле объем кода не растет, а наоборот, уменьшается.
Почему то многие никак не хотят понять, для чего это нужно. А нужно это именно для
атомарного доступа к регистру. Забудь на время про битовые поля.
Разумно описать явными макросами весь доступ к периферийным регистрам (типа TOGGLE_LED через xor)
вы все делаете с самого начала, или все таки предыдущие наработки используете? Еще проблема может быть в том, что если описывать явными макросами на Си, то никто не даст гарантию, что компилятор при определенных обстоятельствах не сгенерирует неатомарный код.
Что мешает выделить разные переменные для передачи флагов из процесса в процесс?
это как? и как быть с прерываниями?
Может лучше про EI/DI вовремя подумать?
для RTOS это неправильно, и я написал почему.