如何STM32生成隨機唯一串碼


如何STM32生成隨機唯一串碼

 

    剛剛在做項目時,遇到一個問題,就是 如何隨機生成一個唯一串碼?

原理:1、動利用srand(int),  rand(),給定一個隨機源seed, 然后在main里這個seed在不斷變化,並且每次在程序一開始seed的值要不一樣,。這樣保證每次隨機的數不一樣。

   2、再建立一個分割字符數組,並且這個數組里的值時刻在變化,這樣為生成的唯一碼加上了二重保險

   3、生成的唯一碼格式是:  [STM32設備ID]@[隨機數1][分割符1][隨機數2][分割符2][隨機數3][分割符3][隨機數4][分割符4][隨機數5][分割符5][隨機數6][分割符6][隨機數7][分割符7][隨機數8][分割符8]

 

代碼結構:

int seed;

char * make_uuid(void)

{

  /*

    用rand()生成8個隨機數,

    取8個分割字符

  */

  組裝唯一串碼

}

 

void change_seperate(void)

{

  //按照一定的算法對分割字符數組里的值,重新排列

 

}

 

 

int main(void)

{

 

  ...

  ....

  seed = [從FLASH里取值] //這個值保證每一次開機都不一樣

  srand(seed);

 

  while(1)

  {  

    ...

    //每100 ms變動一次分割符數組

    ...

  }

 

 

}

 

完畢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM