id.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*******************************************************************
  2. * id.c
  3. *
  4. ********************************************************************/
  5. /* Includes ------------------------------------------------------------------*/
  6. #include <includes.h>
  7. #define ID_BASE_ADDR (0x1FFFF7E8ul)
  8. /***********************************************************
  9. * 函数:GetSTM32ID
  10. * 参数:1、*pID 读取的ID存放指针,12字节ID
  11. * 功能:获取本芯片内部出厂绑定的ID
  12. ***********************************************************/
  13. void GetSTM32ID(unsigned char *pID)
  14. {
  15. unsigned char i = 0;
  16. u32 addr = ID_BASE_ADDR;
  17. for(i = 0; i < 12; i++)
  18. {
  19. *pID = *(u32 *)addr;
  20. pID++;
  21. addr++;
  22. }
  23. }
  24. /************************************************************
  25. *
  26. *************************************************************/
  27. unsigned char GetRandBySTM32ID(void)
  28. {
  29. unsigned char id[12];
  30. unsigned char rand=0x58;//种子
  31. int i;
  32. GetSTM32ID(id);
  33. for(i=0;i<12;i++){
  34. rand^=id[i];
  35. }
  36. if(rand==0x00)rand=0x58;
  37. if(rand==0xff)rand=0x85;
  38. return rand;
  39. }
  40. /*********************************************************************/