如何将数据存入stm32和keil闪存的特定位置?

问题描述 投票:0回答:1

我想在stm32上的FLASH存储器的特定位置存储一些变量,所以我改变了keil中的分散文件。但每当我检查映射文件时,该变量并不位于闪存中的真实位置。 我的分散文件:

LR_IROM1 0x08000000 0x00007800  {    ; load region size_region
  ER_IROM1 0x08000000 0x00007800  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  user_flash 0x08007800 0x00000800  { 
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00001000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

和我的变量:

__IO float  EE_Myvariable __attribute__((section(".user_flash"))) = 21.0;

我该如何应对这个问题? 预先感谢

stm32 keil
1个回答
0
投票

我承诺:

LR_IROM1 0x08000000 0x00007800  {    ; load region size_region
  ER_IROM1 0x08000000 0x00007800  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00001000  {  ; RW data
   .ANY (+RW +ZI)
  }
}
LR_IROM2 0x08007800 0x00000800 {
  My_flash 0x08007800 0x00000800  {  ; load address = execution address
    ;.ANY (+RW)
    *.o(.user_flash)
  }
}

这确实有效

© www.soinside.com 2019 - 2024. All rights reserved.