如何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變動一次分割符數組
...
}
}
完畢