MemotivaSTM32 и архитектура Cortex-M

Зачем нужно ключевое слово volatile при работе с регистрами?

STM32 и архитектура Cortex-M

Аудио-карточка · 0:42

Nortren·

Зачем нужно ключевое слово volatile при работе с регистрами?

0:42

Volatile говорит компилятору, что значение по этому адресу может измениться вне зависимости от потока выполнения программы — например, из-за работы периферии или обработчика прерывания. Без volatile компилятор может закэшировать значение в регистре процессора и не перечитывать его из памяти, что приведёт к чтению устаревших данных. Все указатели на регистры периферии и все переменные, разделяемые между основным кодом и обработчиками прерываний, должны объявляться как volatile. Это одна из самых частых причин загадочных багов в embedded-коде.