2014年6月23日

浅谈C语言中的联合体(转载)

摘要: 联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构... 阅读全文

posted @ 2014-06-23 16:05 LKingK 阅读(280) 评论(0) 推荐(0) 编辑

2014年3月24日

关于宏定义的用法(转自野火)

摘要: 如何解释下面这段代码:#define LED1(a) if (a)\ GPIO_SetBits(GPIOC,GPIO_Pin_3);\ else \ GPIO_ResetBits(GPIOC,GPIO_Pin_3)首先,这个是用宏定义的方式包装成类似函数那样,但不是函数调用你在代码中调用: LED1(1);实际上通过宏定义替换,代码会替换成: if (1) GPIO_SetBits(GPIOC,GPIO_Pin_3); elseGPIO_ResetBits(GPIOC,GPIO_Pin_3)宏定义中的 a 就被 调用时 的 ‘1’ 所替换掉,就类似... 阅读全文

posted @ 2014-03-24 11:40 LKingK 阅读(1445) 评论(0) 推荐(1) 编辑

2013年12月30日

#ifdef #else #endif 与 #ifndef #else #endif 的用法

摘要: 预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。 关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况: 1:情况1: #ifdef_XXXX ...程序段1... #else ...程序段2... #endif 这表明如果标识符_XXXX已被#define命令定义过则... 阅读全文

posted @ 2013-12-30 21:24 LKingK 阅读(1875) 评论(0) 推荐(1) 编辑

2013年12月12日

解决IAR中H文件不能打开的方法

摘要: 我用的是IAR EW8051-EV-750A。运行时经常出错,如:Fatal Error[Pe005]: could not open source file "hal.h" D:\CC2430 Tester-0.6\PER-Receive\Library\cc2430\HAL\source\wait.c 23。经过查资料才发现是路径没有配置好,下面我就说一下配置。下图是我已经配置好的(不同的程序配置是不一样的)。例如工程文件在D:\CC2430 Tester-0.6\PER-Receive\App_Ex\cc2430\IAR_files,h文件在D:\CC2430 Tes 阅读全文

posted @ 2013-12-12 01:02 LKingK 阅读(3180) 评论(0) 推荐(1) 编辑

2013年11月29日

volatile的作用

摘要: volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volatile nVint; >>>>当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。 例如: volatile int i=10; int a = i; ... //其他代码,并未明确告诉编译器,对i进行 阅读全文

posted @ 2013-11-29 22:00 LKingK 阅读(251) 评论(0) 推荐(1) 编辑

Verilog HDL语法学习心得

摘要: 1.数字电路基础知识: 布尔代数、门级电路的内部晶体管结构、组合逻辑电路分析与设计、触发器、时序逻辑电路分析与设计2.数字系统的构成: 传感器AD数字处理器DA执行部件3.程序通在硬件上的执行过程:C语言(经过编译)-->该处理器的机器语言(放入存储器)-->按时钟的节拍,逐条取出指令、分析指令、执行指令4.DSP处理是个广泛概念,统指在数字系统中做的变换(DFT)、滤波、编码解码、加密解密、压缩解压等处理5.数字处理器包括两部分:高速数据通道接口逻辑、高速算法电路逻辑6.当前,IC产业包括IC制造和IC设计两部分,IC设计技术发展速度高于IC设计7.FPGA设计的前续课程:数值分 阅读全文

posted @ 2013-11-29 19:45 LKingK 阅读(1093) 评论(0) 推荐(0) 编辑

Quartus II 中常见Warning 原因及解决方法

摘要: 1.Found clock-sensitive change during active clock edge at time on register ""原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化的。其后果为导致结果不正确。措施:编辑vector source file2.Verilog HDL assignment warning at : truncated value with size to match size of target (原因:在HDL设计中对 阅读全文

posted @ 2013-11-29 19:44 LKingK 阅读(908) 评论(0) 推荐(0) 编辑

static用法及作用

摘要: 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 作用一:在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 这样定义的变量称为局部静态变量:在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。也就是上面的作用一中提到的在函数体内定义的变量。除了类型符外,若不加其它关键字修饰,默认都是局部变量。比如以下代码: void test1(void) { unsigned char a; static unsigned char b; … a++; b++; } 在这个例子中,变量a是局部变量,变量b为局部静态... 阅读全文

posted @ 2013-11-29 19:42 LKingK 阅读(1290) 评论(0) 推荐(0) 编辑

用 typedef 定义类型

摘要: 除了可以直接使用 C 提供的标准类型名(int, char, float, double, long 等),和自己声明的结构体,共用体,指针,枚举类型外,还可以用 typedef 声明新的类型名来代替已有的类型名。如: typedef int; typedef float; 指定用 INTEGER 代表 int 类型,REAL 代表 float。这样,以下两行等价。 int i, j; float a, b; INTEGER i, j; REAL a, b; 这样可以使熟悉 FORTRAN 的人能用 INTEGER 和 REAL 定义变量,以适应它们的习惯。 如果在一个程序中,一... 阅读全文

posted @ 2013-11-29 19:41 LKingK 阅读(1042) 评论(0) 推荐(0) 编辑

结构体介绍

摘要: 1 概述 C语言允许用户自己指定这样一种数据结构,它由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的,这样的数据结构称为结构体,它相当于其它高级语言中记录。 声明一个结构休类型的一般形式如下: struct 结构体名 {成员列表}; 结构体名,用作结构体类型的标志,它又称 结构体标记,大括号内是该结构体中的各个成员,由它们组成一个结构体,对各成员都应进行类型声明如: 类型名 成员名;也可以把 成员列表称为 域表,第一个成员也称为结构体中的一个域。成员名定名规则写变量名同。struct student{ int num; char name[20]... 阅读全文

posted @ 2013-11-29 19:36 LKingK 阅读(271) 评论(0) 推荐(0) 编辑

导航