[an error occurred while processing this directive]
Ответ: ну например (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
есть у нас прерывание таймера и переменная bool bT;
допустим мы в основной программе через эту переменную хотим узнать, было ли это прерывание.
interrupt TimerInt :
bT = true; main:
while (!bT)
; // ждем пока свершится прерывание
Так вот если volatile не поставить, то может случится вот что -
bT лежит в ОЗУ. Процессор на входе в while считает значение в свой регистр, и будет ждать изменения регистра, а не ячейки ОЗУ. Соптимизирует так сказать. Понятно, что не дождется никогда.
А если она будет volatile, то оптимизацию выполнять он не будет, и будет постоянно считывать значение из памяти, что нам и требуется
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание