记录一下一种判断重启原因的方法

本文介绍了一种通过读取STM32的RCC_CSR寄存器来判断重启原因的方法。详细展示了如何在代码中实现读取操作,并解释了如何根据手册确定寄存器地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一次STM32重启事件


记录一下一种判断重启原因的方法:

这里涉及到一个控制/状态寄存器(RCC_CSR)



可以通过在程序中添加读取

该寄存器的数值来判断可能是哪种原因引发的重启。

void static read(void)

{

volatile unsigned long *reg = (volatile unsigned long *)(0x40021024);

unsigned long val;

val = *reg;//读取0x40021024地址中的数据

printf("%lu\r\n",val);

}

寄存器起始地址

如何确定所读取的地址是多少,需要结合STM32的手册。比如我这边读取的是RCC_CSR寄存器中的数值,看手册可得知起始地址,再根据图2中的偏移地址,可以得出最终需要读取的地址。

(小白,求轻喷。谨以此记录我的一次愚蠢的纠结经历,也希望通过记录来提醒自己,少走弯路。)

      </div>
      <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
              </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值