
c语言点滴
文章平均质量分 72
EE漫谈
漫谈电子工程师,技术和生活
展开
-
extern “c”的用法
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 (1) 被extern "C"限定的函数或变量是extern类型的 (2) 被extern "C"修饰的变量和函数是按照C语言方式编译和连接的 未加extern “C”声明时的编译方式 首...原创 2011-03-04 10:43:00 · 891 阅读 · 0 评论 -
C 语言项目中.h文件和.c文件的关系
在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更为恐怖的是,当其中一个声明有变更时,就需要检查所有的.c(.cpp)文件。 于是人们将重复的部分提取出来,放在一个新文件里,然后在需要...原创 2011-03-28 21:52:00 · 21728 阅读 · 5 评论 -
C语言宏定义##连接符和#符的使用
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格解释成分段标志,对于每一段...原创 2011-04-03 21:08:00 · 9453 阅读 · 0 评论 -
串口通信中的int float型数据的处理和发送
在做下位机通信时往往会用到串口,包括下位机将数据传输给上位机,或者是下位机与下位机之间进行数据传输,这时候就会遇到发送数据的问题,单片机通过串口发送数据时往往是一次一个字节(8位),如果传输char(8位)型数据则很好办,只需要直接发送就可以了,但是在发送int型数据和float型数据时就会稍微有些复杂。 下面就以常用的8位单片机89c51为例来进行说明。 当发送in...原创 2011-10-18 20:13:48 · 33101 阅读 · 3 评论 -
串口校验
下位机通过串口将数据传送给上位机,为了保证数据的正确往往需要进行校验,在传送一个字节的时候可以进行奇偶校验,传送一组数据的时候可以采用CRC校验等,但是在发送一组数据的时候采用CRC校验单片机往往太占资源,这就需要有一种比较简单的校验方法。 可以采用类似于IP校验的方式:当发送IP包时,IP报头的校验和为:1、 把校验和字段置为0;2、 对IP头部中的每16bi...原创 2011-09-12 15:17:31 · 6960 阅读 · 0 评论 -
Modbus协议的理解
当上位机和下位机进行通讯或多个微控制器进行通讯时需要进行通讯,很常用的一种就是通过串口收发命令,在简单的系统中可以自己定义一些简单的协议,收发双方按照协议来就可以了,如果要保证传输的稳定和同其他系统的兼容,最好采用通用的通讯协议。 我采用了自己编的协议,但参考了Modbus协议。Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识...原创 2011-11-22 10:47:44 · 10157 阅读 · 1 评论 -
SPI总结
使用80c51f021和ads1251采用SPI口通信。ads1251接口很简单,只有clk,slk,dout/dready四个数据传输引脚。MCU工作在主模式。提供sclk,一直接收ad采集的值。 开始不明白MCU如何控制读取AD的值,搜集了一些资料后才知道想要读取AD的值中的SCLK信号也是由mcu提供的。 首先看一下mcu spi的工作过程:在空闲时SCLK 无信...原创 2012-05-04 14:44:52 · 2758 阅读 · 0 评论 -
C语言中的Inline内联函数解析
在C语言中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据也就是函数内数据的内存空间。 那么在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题:比如函数的死循环递归调用的最终结果就是导致栈内存空间枯竭,程序崩溃。...原创 2019-03-18 19:55:59 · 921 阅读 · 0 评论