void Get_ChipID(void)
{
// F103
// CPU_ID[0]=CPU_ID[0] = *(__IO uint32_t *)(0X1FFFF7F0); // 高字节
// CPU_ID[1]=CPU_ID[1] = *(__IO uint32_t *)(0X1FFFF7EC); //
// CPU_ID[2]=CPU_ID[2] = *(__IO uint32_t *)(0X1FFFF7E8); // 低字节
// F0
CPU_ID[0] = *(__IO uint32_t *)(0X1FFFF7b4); // 高字节
CPU_ID[1] = *(__IO uint32_t *)(0x1ffff7b0); //
CPU_ID[2] = *(__IO uint32_t *)(0x1ffff7ac); // 低字节
}
我的系统一上电就把 UID读到内存变量数组uint32_t CPU_ID[3],因为软件要用这个作为识别,之前的代码都是上电就读一次,以前都不会有问题。最近不知为什么,发现内存变量数组 CPU_ID[3] 中的数据会变化,导致识别失败。uint32_t CPU_ID[3] 是全局变量,程序中不修改的,为啥会变?我在办公室测试的时候都正常,没有发现错误。可是板子现场用着就不行,我开始也不信,去了几次现场调试代码,真的发现 CPU_ID[]变化了,导致识别失败。但是有些板子又不会,现场电柜有变频器,但是离的挺远啊。电源是电柜中的开关电源接24V过来,板子离变频器有20米左右,还有跟电柜有RS485通讯。开始我以为是开关电源不行,但是单独接他们的开关电源我的板子就正常。。。
如果是变频器干扰,为啥之前的板子不会,这是第二批板子。。。
现在临时在需要识别UID的时候重新读取UID放到uint32_t CPU_ID[3]内存变量数组中,今天下午接电柜测试就可以正常识别了。如果在识别前取消重新读取,发现又识别不了,UID 变化了。真是想不懂啊,郁闷。。。
大家遇到变量的数据变化这种情况不?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
数组越界、堆栈溢出? 但是我办公室测试UID一直正常啊,所以一直都没有发现这个问题。如果 数组越界、堆栈溢出 怎么办公室测试的时候发现不了CPU_ID[]数据变化了呢。同一个板子,同一个程序,装在现场就不行,如果接上我带的电源就可以,真搞不懂啊。。。如果是 数组越界,堆栈溢出 该怎么查找啊
一周热门 更多>