我有一些嵌入式代码将命令写入内存地址以控制外围设备,如下所示:
void intelStartEraseBlock(uint16_t *wordAddress) {
*wordAddress = 0x20; //block erase
*wordAddress = 0xD0; //block erase confirm
}
我怀疑优化器正在跳过第一个分配。这是 volatile 的工作吗?还是有更好的解决方案...
注意:这是遗留的 api 代码,所以我不打算重构太多。我在这里寻找“本地”修复。