【发布时间】:2021-07-12 20:45:43
【问题描述】:
我看了一个STM32带LCD的示例代码,发现如下代码,其目的是将LCD控制器寄存器索引写入LCD控制器的输出数据。
void LCD_WR_REG(uint16_t regval)
{
regval = regval; // Necessary delay when using -o2 optimization
LCD->LCD_REG = regval;
}
我为 -o2 搜索了一段时间,但没有得到太多有用的信息来说明这里的评论是什么意思,或者为什么这里需要自分配。
【问题讨论】:
-
使用 GCC,
-O2标志将明确地将行regval = regval;优化为无操作。评论是错误的。-O2中的这条线不会有任何延迟。我非常怀疑他们修改了 GCC,因此在这种情况下它的行为有所不同。这将是非常令人惊讶和非常糟糕的主意。 AFAIK,标准 GCC 支持选项/标志-O2和-o但不支持-o2所以它可能是不同的选项/标志。 -
谢谢,理查德。是的,我在这里也看不到任何意义。
标签: gcc optimization delay