我用液晶屏读取了一个STM32的示例代码,发现下面的代码,它的目的是写入液晶屏控制器的寄存器索引作为液晶屏控制器的输出数据。
void LCD_WR_REG(uint16_t regval)
{
regval = regval; // Necessary delay when using -o2 optimization
LCD->LCD_REG = regval;
}我在-o2上搜索了一段时间,但没有得到太多有用的信息,比如这里的注释是什么意思,或者为什么这里需要自我赋值。
发布于 2021-07-13 06:01:23
这个评论是完全错误的。这个操作将会被优化。我相信这条评论是在代码的原始作者正在努力让它工作的地方写的,还有其他东西在这一行。
LCD_WR_REG:
ldr r3, .L3
strh r0, [r3] @ movhi
bx lr
.L3:
.word 1207993344如果将regval声明为volatile,可能会有一些影响
void LCD_WR_REG1(volatile uint16_t regval)
{
regval = regval; // Necessary delay when using -o2 optimization
LCD->LCD_REG = regval;
}LCD_WR_REG1:
sub sp, sp, #8
strh r0, [sp, #6] @ movhi
ldrh r3, [sp, #6]
strh r3, [sp, #6] @ movhi
ldr r2, .L7
ldrh r3, [sp, #6]
strh r3, [r2] @ movhi
add sp, sp, #8
bx lr
.L7:
.word 1207993344https://stackoverflow.com/questions/68353687
复制相似问题