我目前正在使用带有
STM32h743 MCU Nucleo板的外部16位SRAM芯片,使用FMC对外部SRAM进行内存操作。在表 154(NOR/PSRAM 外部存储器地址,第 806 页)和随附的脚注中,指出发布到外部存储器的地址将向右移动一位。我在一些与外部 SRAM 访问相关的
论坛帖子中也看到了这一点。但是,通过尝试一些操作,我可以确认这似乎不是真的。
的
请参阅下面的代码:
```
uint32_t 数据 = 0x45674567;
*(uint32_t *) (MRAM_BANK_ADDR | 0x10<<1) = 数据;
HAL_延迟(1000);
printf("前 2 个字节:0x%4xn", *(uint16_t *) (MRAM_BANK_ADDR | 0x10<<1));
printf("最后 2 个字节:0x%4xn", *(uint16_t *) (MRAM_BANK_ADDR | 0x10 <<1 | 0x02));
printf("带位移的最后 2 个字节:0x%4xn", *(uint16_t *) (MRAM_BANK_ADDR | 0x12 <<1));
printf("整个读取:0x%8lxn", *(uint32_t *) (MRAM_BANK_ADDR | 0x10<<1));
数据 = 0x78907890;
*(uint32_t *) (MRAM_BANK_ADDR | 0x10<<1 | 0x04) = 数据;
printf("前 2 个字节:0x%4xn", *(uint16_t *) (MRAM_BANK_ADDR | 0x10 <<1 | 0x04));
printf("最后 2 个字节:0x%4xn", *(uint16_t *) (MRAM_BANK_ADDR | 0x10 <<1 | 0x06));
```
的
输出:
```
前 2 个字节:0x4567
最后 2 个字节:0x4567
带位移的最后 2 个字节:0x7890
整个读取:0x45674567
前 2 个字节:0x7890
最后 2 个字节:0x7890
```
的
当应用手册中描述的移位时,输出不正确。事实上,访问第二组 2 个字节不需要移位。这似乎也适用于写作。
这是手册中的错误,还是我误解了所写的内容?
的
的