![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
在此单独用srand()函数有什么作用(用了有什么好处,不用又会怎样),一般srand()用于
给rand()设定种子(即srand给定rand运算式子的第一个值)。查了FAQ(P22)仅仅说明了
seed的译文。
答2
你说的没有错,他就是用来设置随机数的种子。
每次编译一次,void TargetInit(void)函数在Ram或者Flash中的地址都不一样
(即种子也不一样)。如果你在程序中不用随机函数rand(),那么srand()
在这里对你来说是没有意义的,如果你要用rand(),那么每次编译程序后你的rand()
产生的随机数就不一样。当然,你也可以自己种种子咯。
答3
srand((uint32) TargetInit);是初始化uc/os-ii随机数函数rand();也就是说给随机数一个基值,以后调用相关随机数函数时,随机数就在此基值的基础上改变。
只要不调用rand()函数,就可以去掉这句。
7.
在arm上移植操作系统有一点需要注意:建立任务的任务,最好不要做复杂的工作。
频繁的访问其他硬件或者做时序要求比较严的工作容易造成系统死机,希望大家多
多注意。我的做法是:将建立任务的任务,闲置起来,但是不能进入死循环。方法
是:利用一个空邮箱,让任务无限期的等待,这样可以实现与其他任务的切换。
8.//定义与编译器无关的数据类型
typedef unsigned char BOOLEAN;//布尔变量
typedef unsigned char INT8U;//无符号8位整型变量
typedef signed char INT8S;//有符号8位整型变量
typedef unsigned short INT16U;//无符号16位整型变量
typedef signed short INT16S;//有符号16位整型变量
typedef unsigned int INT32U;//无符号32位整型变量
typedef signed int INT32S;//有符号32位整型变量
typedef float FP32;//单精度浮点数(32位长度)
typedef double FP64;//双精度浮点数(64位长度)
typedef INT32U OS_STK;//堆栈是32位宽度
注:这里为什么用typedef,因为如果用#define,那么代码中的每一个相应的类型都会被替代,
很有可能会出现问题,毕竟他只是一个替代的关系,且编译时间会增加,而用typedef则不会,
它就相当于我们C++里面的引用,一样的思维,在这里面就是说多了一个名称。还有要注意的是
我们怎么知道unsigned char 就是无符号8位整型变量,可以arm公司里面下载ADS_CompilerGuide_D.PDF
文件,或者在你所装的ADS1.2目录里面有一个文件夹叫PDF,打开它就可 |
|