开发环境:keil v4.12
stm32型号:stm32f103rbt6,flash 128K,ram 20k
通过下面的代码:
__attribute__((zero_init)) u32 boot_flag __at(0x20004FE0);
将boot_flag变量设置为热启动时不初始化,也即保持该地址ram之前的数值。实际测试,地址0x20004FE0确实可以保持先前的数值,但地址0x20004FF0处的值每次读取出来的不是之前的地址,而是该地址的数值0x20004FF0。
stm32f103rbt6的ram地址起始地址为0x20000000,大小0x5000。所以地址0x20004FF0地址也在ram片内。麻烦大家看下,为什么0x20004FF0地址读取的数据会是该处的地址呢? |