Зачем нужно ключевое слово volatile при работе с регистрами?
STM32 и архитектура Cortex-M
Аудио-карточка · 0:42Nortren·
Зачем нужно ключевое слово volatile при работе с регистрами?
0:42
Volatile говорит компилятору, что значение по этому адресу может измениться вне зависимости от потока выполнения программы — например, из-за работы периферии или обработчика прерывания. Без volatile компилятор может закэшировать значение в регистре процессора и не перечитывать его из памяти, что приведёт к чтению устаревших данных. Все указатели на регистры периферии и все переменные, разделяемые между основным кодом и обработчиками прерываний, должны объявляться как volatile. Это одна из самых частых причин загадочных багов в embedded-коде.