用rand产生的数每次都是固定的。即你这一次运行是那个值,掉电重启后还是那个值。rand要产生随机数,是要用srand(x)函数,其中x是一个随时间变化的量。但是没有RTC了,不知怎么产生这随时间变化的量了
如产生1~100随机数,你这样写:
#include <stdlib.h>
do{ i = rand(); }while((i> 100) || (i < 1));
谢谢andy的回答,我专门用你的代码加上将i值直接打印到串口上,通过串口助手查看i值。下载到FLASH上后,多次掉电重启得到的i值都是同一个数。
最后只能用土办法了,没RTC。。。定义一个变量a,在每次开机时将a加1,然后存在EEPROM中。然后用下面代码:
srand(a);
i = rand()%100;
这样每次开机i的值都不一样了。看来rand不随机啊!