Я как-то попробовал с Cortex-M3. Со вложенностью не вышло. Оно на
уровне одного прерывания работает, а если вложено - то... Деталей
не помню, то ли риск зависнуть, то ли прерванный код имеет шанс не
увидеть изменения, так как его проверил уже прервавший вторым
уровнем код. См. по тегу LDREX
https://caxapa.ru/1429545.html
P.S. Вот, вспомнил: оно не сработает, если нужно защитить доступ шире, чем выровненные 32 бита:
"Увы, так не заработает. Я прикидывал и не нашёл способа атомарно обновить, при помощи этой пары инструкций, что-либо больше 32 бит. Если у STM32F адрес не проверяется, то для обоих переменных достаточно одной обёртки. Но это будет противоречить документации, где явно указано, что нужно проверять сохранность эксклюзивности доступа именно по указанному адресу и именно указанной ширины. А это лишь один адрес с шириной данных до 32 бит."
До 32 бит - сработает, годно.