ST意法半导体
直播中

七上八下

8年用户 836经验值
私信 关注
[问答]

STM32F302R8中NVIC_reset()后如何保留全局变量?

大家好,
我想在软件复位后保留一个变量值
我试过 __no_init 但变量重置为零
有什么方法可以在运行时写入 Flash 并在重置后取回它




回帖(1)

李乔

2023-1-6 11:21:17
它像这样与 gcc 一起工作:
在.c:


  • int no_init __attribute__ ((section (".no_init")));

在链接器描述文件.ld中,在heap+stack之前添加一段:


  • .no_init :
  •   {
  •     *(.no_init)
  •   } > RAM

用于检测:


  • printf("no_init: %dn", no_init );
  •           no_init++;

  •         HAL_Delay(100);
  •         NVIC_SystemReset();

将 printf 重定向到 UART 等,并观察 no_init 变量在每次重置后递增。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分