wending2160 发表于 2023-8-16 23:04

诡异死机现象

在使用N32G43x做步进电机驱动,程序不变,使用调试器下载复位运行(不掉电),所有功能有正常。如果是重新上电运行,则只要调用flash模拟eeprom存储参数功能函数,MCU就会死机,即便是刚烧录完,啥也没操作,只要是断电重新上电,程序运行就变得诡异。把flash存储内部函数调用注释,则会出现DAC输出异常,变得莫名其妙。有网友遇到过类似的问题吗?

wending2160 发表于 2023-8-16 23:09

PS: 在N32G430片子也遇到一个诡异现象,板子调试引脚swd没有引脚复用,软件也没有配置复用,但烧录程序后就不能再使用调试器二次烧录,最后定位到是跟显示初始化函数有关,只要把该函数里的两个子函数放到平级调用(如下2、3行代码,放到app_Display_Init()就不行),就恢复可以正常烧录了,真的十万个为什么?

    app_Display_Init(gPar_holdreg_s.workmode);   
    AutoMC_DisplayAbs_Handles.AutoMC_DisAbs_DevInit();   //显示设备初始化
    AutoMC_DisplayAbs_Handles.AutoMC_DisAbs_Clean();   //清屏   

gaoyang9992006 发表于 2023-8-17 08:37

可能是第二条起作用,以前遇到过一次,是配置错误导致的。检查了好几遍才发现。因为用的是库函数,可能底层的冲突表面看不出来。

jobszheng 发表于 2023-8-17 10:05

这是把SWD给搞死了呗。
楼主,不行就单步进入函数看看哪条语句执行后,jtag就挂掉了,再分析吧。

alienmiller 发表于 2023-8-17 11:46

只要调用flash模拟eeprom存储参数功能函数,MCU就会死机,估计eeprom地址不太对,导致破坏了程序空间,仔细看看配置吧。DAC输出异常,可能是调用了flash模拟eeprom存储的数据。

wending2160 发表于 2023-8-17 12:50

alienmiller 发表于 2023-8-17 11:46
只要调用flash模拟eeprom存储参数功能函数,MCU就会死机,估计eeprom地址不太对,导致破坏了程序空间,仔细 ...

问题是使用调试器下载程烧录并复位运行,是可以正常运行的,如果是地址不对,那不管哪种启动方式都会出错呀。而且这个部分代码是我们的商业代码,在多个项目使用中。

wending2160 发表于 2023-8-17 12:55

gaoyang9992006 发表于 2023-8-17 08:37
可能是第二条起作用,以前遇到过一次,是配置错误导致的。检查了好几遍才发现。因为用的是库函数,可能底层 ...

第二行是初始化oled控制IO,引脚与swd无关,假如是配置错误,那么不管放在哪个层次调用都会出问题吧。

sjnh 发表于 2023-8-17 13:12

曾经碰到这种问题的原因是有变量没有初始化就用了,仿真下载时这个没有初始化的变量还是上次正确运行的值,重新上电后值不定导致运行不正常

tpgf 发表于 2023-9-5 12:08

是不是考虑监测一下电源电压有没有突然下降的现象呢

aoyi 发表于 2023-9-5 13:24

flash操作的时序是满足要求的吗

gwsan 发表于 2023-9-5 16:17

楼主调用这个函数的时候指定地址操作了吗

tfqi 发表于 2023-9-5 20:23

请问什么叫平级调用啊?这个还怎么分呢

zljiu 发表于 2023-9-5 21:01

这个得对一下芯片的存储空间的分配吧

nawu 发表于 2023-9-5 21:58

楼主抛弃库函数自己写配置试试看

pengf 发表于 2023-9-5 23:46

配置错误

wxheky 发表于 2023-9-6 15:58

换一块单片机试试看,已经遇到过很多次了。不是每一片都可以按标准频率跑起来

chenjun89 发表于 2023-9-6 21:19

这个更多只有从外设配置上检查

田舍郎 发表于 2023-9-6 23:51

程序崩了吧

chenqianqian 发表于 2023-9-7 08:18

从现象来看应该配置冲突了

zy16816888 发表于 2023-9-21 09:15

我感觉编程这么多年,还没怎么遇到MCU死机的情况,程序标准化后基本就遇不到了,这种情况应该是和你的程序关系极大
页: [1] 2
查看完整版本: 诡异死机现象