想要学习嵌入式编程的朋友们,今天这一期给大家分享一篇关于嵌入式编程一些常用小知识,希望对大家有所帮助。
2.在LPC2200系列中:
可以通过过下面的程序延迟10毫秒:
for(i=0;i<200;i++)
{
for(j=0;j<200;j++);
}
3.通过下面语句将一个16位的变量放在两个8位的变量中。
//IP数据报总长度高字节
IpHeadUint8[10]=(IpHead.e_ip.Crc&0xff00)>>8;
//IP数据报总长度低字节
IpHeadUint8[11]=IpHead.e_ip.Crc&0x00ff;
4.在对全部数组元素赋初值时,可以不指定数组长度。
eg;inta[]={1,2,3,4,5};
但如果当输出第a[5]以上的元素时,系统回输出随机数值,所以使用此方法时,不能使用超过初始值元素以上的元素。
5.由于ADS先天性的对printf不支持;因此不便于我们调试,可以利用串口输出来代替printf来调试。
6.用或运算,可使某位置为1,其它位不变
eg:PINSEL0|=0x00000005;//设置串口引脚
使第0位和第二位置一,其他位不变。
7.函数指针
1>C语言中函数名直接对应于函数生成的指令代码在内存中的地址,因此函数名可以直接赋给指向函数的指针
2>调用函数实际上等同于“调用指令+参数传递处理+回归位置入栈”,本质上最核心的操作是将函数生成的目标代码的首地址赋给CPU的PC寄存器。
3>因为函数调用的本质是跳转到某一个地址单元的code去执行,所以可以“调用一个根本就不存在在函数实体
4>int(*p)();定义p是一个指向函数的指针变量,次函数返回带回整型的返回值。*P两侧的括号不能省略,表示p先于*结合,是指针变量,然后再与后面的()结合,表示此指针指向函数。
区别:int*p()表示这个函数的返回值是指向整型变量的指针。
说明:
(1)指向函数的指针变量的一般定义形式为:
数据类型(*指针变量名)();
1>此处的“数据类型”是指函数返回值的类型
(2)返回指针值的函数:
类型名*函数名(参数表)
eg:int*func(int x,int y)
func是函数名,调用它以后能返回一个指向整型数据的指针。x,y是func的形参。
区别方法:
a.从右往左找*个括号,括号里面的是函数的形参。
b.括号外面的*个标识符是函数的名字,函数前面的表示函数的返回数值。