用nuc029lan单片机做控制,每次看门狗复位系统自动重启,如何让数据在看门狗复位时数据保持不清零

tallfeng |浏览1199次
收藏|2018/04/09 21:33

满意回答

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

jamesliu

其他回答(0)
0人关注该问题
+1
 加载中...