给定以下代码:
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 Rule-13.2存在问题,我决定进行一些研究。我在这里(http://archive.redlizards.com/docs/misrac2012-datasheet.pdf)发现:
在一个序列点内不得有超过一次具有 volatile 限定类型的读取访问
这里的问题是,我无法找到一个示例或解释来说明为什么在一个序列点内不能有超过一个具有 volatile 限定类型的读取访问。
我需要为违规代码找到解决方案,但我并不清楚该怎么做。
我现在知道在一个序列点内不应有超过一个具有 volatile 限定类型的读取访问。问题是,为什么?我需要知道为什么要实施解决方案并在这里向大家解释我为什么要更改代码。
问候。