rng.c 456 B

1234567891011121314151617181920212223242526272829
  1. #include "rng.h"
  2. #include "at32f403a_407.h"
  3. #include "stdio.h"
  4. #include <stdlib.h>
  5. #define DEVICE_ID_ADDR1 0x1FFFF7E8
  6. //
  7. void RNG_Init(void)
  8. {
  9. uint32_t id[3] = {0};
  10. uint32_t uid_one_word;
  11. // get uid
  12. id[0] = *(int*)DEVICE_ID_ADDR1;
  13. id[2] = *(int*)(DEVICE_ID_ADDR1+8);
  14. uid_one_word = id[0]&0x7fffffff+((id[2]&(~0x7fffffff))<<16);
  15. srand(uid_one_word);
  16. }
  17. //
  18. uint32_t GetRandomNumber(void)
  19. {
  20. return rand();
  21. }