Учитывая следующий код:
static volatile float32_t tst_mtr_dutycycle;
static volatile uint8_t tst_mtr_direction;
static volatile uint32_t tst_mtr_update;
void TST_MTR_Task(void)
{
if (tst_mtr_update == 1U)
{
tst_mtr_update = 0;
MTR_SetDC(tst_mtr_dutycycle, tst_mtr_direction);
}
}
Я обнаружил проблемы с Правилом MISRA C 2012 – 13.2 и решил провести небольшое исследование. Я нашел здесь (http://archive.redlizards.com/docs/misrac2012-datasheet.pdf) что:
в пределах одной точки следования должно быть не более одного доступа для чтения с типом volatile-qualified
Дело в том, что я не смог найти пример или объяснение, объясняющее, почему в пределах одной точки последовательности должно быть не более одного доступа на чтение с типом, квалифицируемым как volatile.
Мне нужно найти решение для нарушения кода, но мне не совсем понятно, что делать.
Теперь я знаю, что в пределах одной точки следования должно быть не более одного доступа на чтение с типом, квалифицируемым как volatile. Вопрос в том, почему? и мне нужно знать почему, чтобы реализовать решение и объяснить всем здесь, почему я меняю код.
С Уважением.