如何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变动一次分割符数组
...
}
}
完毕