反复上电MCU中flash数据改变

项目场景:

MCU:STM32F405RG
RTOS:FreeRTOS
外设:ADC、PWM、TIMER、DAC
开关:硬开关/软开关
芯片库:HAL库


问题描述

  1. 反复开关上电MCU,不论是否连接外部模块。
  2. 以间隔5s去操作上下电。
  3. MCU的0x08000000处地址数据被修改。其他位置数据也会被偶然修改。
  4. 导致MCU无法正常启动。
  5. 电路上无电压电流异常问题。
  6. 此现象触发概率相对较大。

flash被改变的数据
flash异常位置

flash正常数据
flash正常数据


原因分析:

  1. 采用屏蔽中断的方式能够避免出现这类问题。
  2. 故猜测是否是中断问题。
  3. 通过大量测试分析后发现,对外设做反初始化,且每个初始化参数赋初始值。
  4. 再通过长时间测试后,未再发现问题。
  5. 故判定为TIMER初始化下,部分参数未设初始值,且没有做反初始化。
  6. 具体导致问题,大概率是HAL库/芯片本身问题。

解决方案:

  1. 对每个外设的初始化参数赋初始值。
  2. 在初始化前做反初始化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值