1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。
2. 通过下面语句将一个16位的变量放在两个8位的变量中。
//IP数据报总长度高字节
IpHeadUint8[10]=(IpHead.e_ip.Crc&0xff00)>>8;
//IP数据报总长度低字节
IpHeadUint8[11]=IpHead.e_ip.Crc&0x00ff;
3. 在对全部数组元素赋初值时,可以不指定数组长度。
eg;inta={1,2,3,4,5};
但如果当输出第a[5]以上的元素时,系统回输出随机数值,所以使用此方法时,不能使用超过初始值元素以上的元素。
4. 由于ADS先天性的对printf不支持;因此不便于我们调试,可以利用串口输出来代替printf来调试。
5. 用或运算,可使某位置为1,其它位不变
eg: PINSEL0 |= 0x00000005; //设置串口引脚
使第0位和第二位置一,其他位不变。
6. C语言符号优先级:
1>复合赋值运算符号:
a =3*5;
等价于a=a (3*5);
7.一个常见的调试策略是把一些printf函数的调用散布于程序中,确定错误出现的具体位置。但是,这些函数调用的输出结果被写入到缓冲区中,并不立即显示于屏幕上。事实上,如果程序失败,缓冲输去可能不会被实际写入,因此得到的错误位置就是错误的。解决的方法是在每个用于调试的printf函数之后立即调用fflush函数即可得到。
8.关键字volatile的用法
volatile变量可能用于如下几种情况:
1>设备的硬件寄存器(如:状态寄存器)
2>一个中断服务子程序中会访问到的全局变量
3>多线程应用中被几个任务共享的变量。
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。