Я использую процессор nrf52 microcontroller (CORTEX 34F). У меня есть переменная проверка основного цикла, которая модифицируется как в основном цикле, так и в процедуре прерывания таймера.- ключевое слово volatile действительно необходимо, когда переменная изменена в процедуре прерывания
главная проверка цикла, если переменная является истинным:
выполнение кода условия
набор переменной ложной
- таймера прерывания рутинного набора переменных к истине каждый 10 мс
без volatile
ключевого слова, код кажется не работает, но когда я установил переменную volatile
, кажется, работает, но я не уверен, потому что:
- первый я думаю кора M4f не содержит кэш данных память
- второй: этот случай handeld компилятором (рука Keil)
любой ответ пожалуйста;
если верно выполнить код тела 2. Элемент списка
Да, это необходимо – Fredrik
Ответ здесь http://stackoverflow.com/questions/246127/why-is-volatile-needed-in-c – dkolmakov
@dkolmakov: Это более или менее дубликат, но принципиально, возможно, не устраняет непонимание между аппаратной функцией * кэш-памяти * и программным способом * «кэширования значения в регистре» *. – Clifford