2022/09/06 14:17
如果希望SRAM中所有变量都不要初始化,可以选择keil->options中Linker选项卡中use Memory Layout from Target Dialog,之后Target->Noinit勾上。
如果只是希望某些变量不要初始化,稍稍复杂一些
Compiler6如下
#pragma clang section bss = "NOINIT"
uint8_t buf[16];
#pragma clang section bss =""
Compiler5如下
#pragma arm section zidata = "NOINIT"
uint8_t buf[16];
#pragma arm section zidata =""
下面内容放到ram.sct文件内
LR_IROM1 0x00000000 0x0008000 { ; load region size_region
ER_IROM1 0x00000000 0x0008000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_2 0x20000000 UNINIT 0x0300 {
main.o (NOINIT)
}
RW_IRAM3 0x20000300 {
.ANY (+RW +ZI)
}
}
然后keil里面options->Linker->Scatter File选择ram.sct
之后就能看到变量buf不再清0