本帖最后由 dabendan001 于 2019-6-9 15:51 编辑 方法一: char * GetChipUniqueID_Str_STM32F10x(char* stm32id_StrBuf_32char ) { uint32_t chipUniqueID32[3]; chipUniqueID32[2] = *(__IO uint32_t*)(0X1FFFF7F0); chipUniqueID32[1] = *(__IO uint32_t*)(0X1FFFF7EC); chipUniqueID32[0] = *(__IO uint32_t*)(0X1FFFF7E8); snprintf(stm32id_StrBuf_32char,32,"0x%X-%X-%X", chipUniqueID32[0],chipUniqueID32[1],chipUniqueID32[2]); return stm32id_StrBuf_32char; } 读得的UID是:0x5DBFF30-43084562-43084562 方法二: uint32_t * GetSTM32MCUIDPMing(uint32_t *id,MCUTypedef type) { // type =1, idAddr[type] =0x1FFFF7E8; if(id!=NULL) { id[0]=*(uint32_t*)(idAddr[type]); id[1]=*(uint32_t*)(idAddr[type]+4); id[2]=*(uint32_t*)(idAddr[type]+8); } //printf("\r\nSTM32_ID_Str(inside):0X%X-%X-%X\r\n",id[0],id[1],id[2]); return id; } 读得的UID是:0x20009068-8000165-800016D; 为何 不相同呢??(这两个函数,写在在工程中不同的.C文件中) |
还是硬件仿真看一下相应寄存器的值是多少吧。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
谢谢
每个系列的STM32地址是不同。我用的是STM32F105RB,地址是 0x1ffff7e8
函数内部用了printf()打印出结果呢。就这,两个写法,结果就不相同。所以我郁闷了,来发贴求援。
在不同的位置,直接调用这两个函数,就是了。不需要其他的代码呢。
这两个函数体内直接有printf()语句,打印出来就看到信息。
谢谢
是照搬这里的代码。http://blog.csdn.net/foxclever/article/details/80294516
(版主,不好意思哈。纯技术交流,无他意,请见谅。)
不是版主,只是个热心的人而已。
评分
查看全部评分
非常感谢!
似乎算法相同呢。STM32F10X系列的首地址都是:0x1FFFF7E8, 后面两个分别+4 和+8;http://blog.csdn.net/foxclever/article/details/80294516 (是这个的源码,我前面好像贴错链接了)