记录一次STM32重启事件

记录一次STM32重启事件

很久不碰自己手中的一个设备,最近发现会隔十几天就会死机,想去寻找原因何在,没想到死机的原因没找到,却是先发生了重启的问题。我先按照自己的思路,先检查问题:
1、先是对照着原理图找了半天,确认线没接错。
2、把之前试过的确认无误的程序重新找出来编译下载。
3、把例程找出来试。
以上三种方法都试过了,还是有问题。我在思考难道是传感器出现了问题,去找淘宝店家提供的服务群里面尝试询问有没有人碰到过这种问题。并且把这个问题反映给了硬件工程师。
果然自己还是太菜了,我把情况说明了之后,群里的人立马给我提供了思路:
在这里插入图片描述
硬件工程师认为他板子有问题,说可能是供电不足的问题。

结合了一下我才发现自己笨到没有测量电压。
测量之后发现供电是3.3V,对照原理图又看了一下,确实是3.3V,早上看图的时候根本没有对3.3V有多敏感,一下子脑海里回忆涌出…当初测试这个传感器的时候就是这个问题啊!硬件这边的一个脚本来应该是5V,画成了3.3V了,当时没有及时记录下来,导致现在记不清板子存在的问题了。

顺便再记录一下一种判断重启原因的方法:
这里涉及到一个控制/状态寄存器(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中的偏移地址,可以得出最终需要读取的地址。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值