Переписываю чужой проект, меняю его структуру, избавляюсь от глобальных переменных.
И столкнулся с одним моментом, который не совсем понятен и в гугле не знаю как правильно найти интересующий вопрос.
Есть два варианта, оба работают, но хотелось бы выбрать более правильный.
В первом варианте я пишу volatile перед названием структуры,
во втором пишу volatile перед типом каждой переменной в самой структуре
Абстрактный пример кода набросал, который передает суть
Код: Выделить всё
// Вариант 1
// file *.h
typedef struct
{
uint16_t current_temperature;
uint16_t round_temperature;
uint16_t voltage;
uint16_t power;
} parameter_st;
void func(volatile parameter_st *param);
// file *.c
volatile parameter_st parameter = {10, 20, 30, 40};
void func(volatile parameter_st *param)
{
if(param->voltage > 1000) param->power = 80;
else param->power = 0;
if(param->voltage < 0xFFFF) param->voltage++;
else param->voltage = 0;
}
void ***_IRQHandler(void)
{
func(¶meter);
}
// Вариант 2
// file *.h
typedef struct
{
volatile uint16_t current_temperature;
volatile uint16_t round_temperature;
volatile uint16_t voltage;
volatile uint16_t power;
} parameter_st;
void func(parameter_st *param);
// file *.c
parameter_st parameter = {10, 20, 30, 40};
void func(parameter_st *param)
{
if(param->voltage > 1000) param->power = 80;
else param->power = 0;
if(param->voltage < 0xFFFF) param->voltage++;
else param->voltage = 0;
}
void ***_IRQHandler(void)
{
func(¶meter);
}


