07 2015 档案
摘要:CAN网络图示 CAN的特点 CAN协议具有以下特点。 (1)多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权(CSMA/CA方式*1)。 多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权。 (2)消息的发送 在CAN协议中,所有的消息都以固定的格式发送。总线空闲时...
阅读全文
摘要:串口简介 1.什么是串口?串口是计算机上一种非常通用的设备通信的协议。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口能够轻松实现远距离通信。 spi,iic属于同步串口。 uart属于异...
阅读全文
摘要:SPI总线协议及SPI时序图详解 : http://blog.163.com/sunshine_linting/blog/static/44893323201181482335951/ 浅谈SPI总线 http://www.51hei.com/mcu/4011.html 【SPI基础知识简介】 1.
阅读全文
摘要:I2C 总线具有如下特点:
1)I2C 总线是双向传输的总线,因此主机和从机都可能成为发送器和接收器。不论主机是发送器还是接收器,时钟信号SCL 都要由主机来产生。
2) 只需要由两根信号线组成,一根是串行数据线SDA,另一根是串行时钟线SCL
3) SDA 和SCL 信号线都必须要加上拉电阻Rp(Pull-Up Resistor)。上拉电阻一般取值3~ 10KΩ
4) SDA 和SCL 管脚都是漏极开路(或集电极开路)输出结构
5) 同一IIC总线上同一型号的IC只能最多共挂8片同种类芯片
6) 进行数据传送时,在SCL为低点平时,才允许SDA线上电平改变状态。
阅读全文
摘要:一、内部总线
1.I2C总线
2.SPI总线
3.SCI总线
二、系统总线
1.ISA总线
2.EISA总线
3.VESA总线
4.PCI总线
5.Compact PCI
三、外部总线
1.RS-232-C总线
2.RS-485总线
3.IEEE-488总线
4.USB总线
阅读全文
摘要:in linux:
sizeof(char) = 1
sizeof(int) = 4
sizeof(short int) = 2
sizeof(long int) = 4
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 12
阅读全文
摘要:C语言自动转换不同类型的行为称之为隐式类型转换 ,转换的基本原则是:低精度类型向高精度类型转换,具体是:
int -> unsigned int -> long -> unsigned long -> long long -> unsigned long long -> float -> double -> long double
阅读全文
摘要:在博客文章URL中博客园的MetaWeblog访问地址,格式为:http://www.cnblogs.com/你的用户名/services/metaweblog.aspx
阅读全文
摘要:一、意义;
二、使用场景;
三、嵌入式编程中经常用到 volatile这个关键字;
四、volatile与const; volatile与指针 ;
阅读全文
摘要:cd /d d:\ ;
md 创建目录 md movie music ;
dir 显示目录中的内容;
tree 显示目录结构;
ren rec.txt rec.ini 将当前目录下的rec.txt文件重命名为rec.ini ;
shutdown 关闭、重启、注销、休眠计算机 ;
find . -type f -name "*.txt" | xargs grep "1." ;
阅读全文
摘要:概要:
1.普通数组与指针
2.数组指针
3.指针的数组
阅读全文
摘要:注意在现在的gcc中, const可能会被用指针绕过。
阅读全文
摘要:结构体属于构造数据类型,用struct标识。
//1.定义结构体类型的时候,里面是分号,定义完毕后要加分号。
// 2.定义并初始化一个结构体
//3.0 定义并初始化一个结构体时,可以点赋值
//3.1 点赋值只能是初始化结构体变量时才能用
c = a;//4.结构体直接赋值(方法1)
d = func1();//5.结构体直接赋值(方法2) 结构体作为函数返回值对另一个结构体赋值.
//6.声明之后为一个结构体变量赋值效果.不同于定义并初始化一个结构体变量。
//7.结构体直接赋值的不安全因素:(c语言)
阅读全文
摘要:1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。
2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)
3:收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的整数倍.不足的要补齐.
4:注意套用三原则里计算的对齐值是不能大于#pragma pack指定的n值. gcc默认是#pragma pack(4),并且gcc只支持1,2,4对齐。
阅读全文
摘要:1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
阅读全文
摘要:函数调用,内存,malloc
阅读全文
摘要:声明指向常量字符串的指针时最好这样:
const char* p = "...";
阅读全文
摘要:在设置错误代号时,使用enum比宏更好看。 enum最常用的用法就是作为“宏”的集合(如:错误代码集, 信息代码集。) 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作, 此时enum是比#define更好的替代方式。 注意:同一个程序中不能定义同名的枚举
阅读全文
摘要:union:不允许只用联合变量名作赋值或其它操作。也不允许对联合变量作初始化赋值,赋值只能在程序中进行。小端存储:以字节为单位,低存低,高存高。任何数据在内存中都是以二进制(1或着0)顺序存储的,每一个1或着0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2字节)的 short in...
阅读全文
摘要:二维数组(数组名与地址的关系);
阅读全文
摘要:typedef是用来声明类型别名的;typedef int INT;
#define是一个宏定义命令,在预处理阶段完成替换;#define INTPTR1 (int*)
阅读全文
摘要:宏中"#"和"##"的用法;
列举软件中常用得一些宏定义;
宏跟踪调试,输出数据信息和所在文件所在行;
阅读全文
摘要:最简单的一个链表create,show,delete的演示
阅读全文
摘要:字符串倒序,字符串末尾‘\0’,malloc,free,防止产生野指针,
阅读全文
摘要:scanf用法,
一般使用fgets来读取一个字符串,
scanf函数也可完成这样的功能,而且还更强大.scanf("%[^\n]", str);scanf("%[a-z],str);scanf("%[^.]", str);
阅读全文
摘要:倒序思路:依次把后面的节点移往头部。struct Node{ struct Node* next; int data;};typedef struct Node NODE;NODE* invert_link_list2(NODE* head){ if(head == 0){ ...
阅读全文
摘要:地址方面,美国人的习惯与我们相反,从小往大写。注意路名、公司名、村名等均不用翻译成同意的英文,只要照写拼音就行了
阅读全文
摘要:一组成功的网络设定需要哪些资料呢?就是:
1. IP; 2. network; 3. netmask; 4. broadcast; 5. gateway
阅读全文
摘要:第一种:桥接Bridged
第二种:NAT(网络地址转换),共享Host主机的IP地址
第三种方式:Host-only
阅读全文