ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
21 января
1486823 Топик полностью
IBAH (26.12.2024 19:18, просмотров: 108) ответил mse homjak на А если у меня данные меняются вне контекста?
Ну просто же. В том файле где меняются вне контекста - volatile, в остальных без оного. Например при неприоритетной системе прерываний, в файле прерывания определяем без volatile, в остальных файлах с volatile. А еще лучше использовать гетер, и волатильную переменную не светить по всему проекту. Например так 
//
for(i=0;i<16;i++)
    {
      while((flagsRegister&(1<<resieveExtData))==0){}
      flagsRegister&=~(1<<resieveExtData);
      MiS21dataArray[i]=GetPrimaryB_16_bit_data();
    }
//

Файл прерывания

//
static primaryB_t primaryB;

unsigned short GetPrimaryB_16_bit_data(void)
{
_disableIRQ();//если 8бит МК
unsigned short tmp= primaryB._16_bit_data_;

_enableIRQ();//если 8бит МК

return tmp;
}
//