c
吾息
这个作者很懒,什么都没留下…
展开
-
IIC介绍(一)之物理层介绍
IIC的引脚少,硬件实现简单,可扩展性强,不需要UART、CAN等通讯协议的外部收发设备,而被广泛地应用于系统内多个集成电路间的通讯。IIC的常见连接方式如下图所示:由上图可知,IIC的物理特性很简单:(1)两根线:SCL为时钟线,接2~15V的电压以及一个上拉电阻;SDA为数据线,接2~15V的电压以及一个上拉电阻;...转载 2019-11-24 21:12:03 · 728 阅读 · 0 评论 -
IIC协议解释
IIC协议解释(1)概述I2C(Inter-Integrated CircuitBUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)...转载 2019-11-24 20:58:30 · 223 阅读 · 0 评论 -
再探索IIC应答信号和非应答信号
转自:https://blog.csdn.net/sinat_31499981/article/details/782156621,SCL一直由Master控制,SDA依照数据传送的方向,读数据时由Slave控制SDA,写数据时由Master控制SDA。当8位数据传送完毕之后,应答位或者否应答位的SDA控制权与数据位传送时相反。2,开始位“Start”和停止位“Stop”,只能由Maste...转载 2019-11-24 20:25:17 · 2166 阅读 · 0 评论 -
原码, 反码, 补码 详解
来自:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一....转载 2019-03-27 22:00:22 · 190 阅读 · 0 评论 -
Q格式运算讲解
来自:https://wenku.baidu.com/view/4c15504733687e21af45a95e.html转载 2019-03-27 22:22:22 · 2646 阅读 · 0 评论 -
STM32中的程序在RAM还是FLASH里运行?
转载 2019-08-04 09:51:04 · 668 阅读 · 0 评论 -
cpu运行时程序是在flash中还是在RAM呢?
转自:http://blog.csdn.net/denghuanhuandeng/article/details/6904728对于x86的pc机和单片机等嵌入式开发系统程序的存储是截然相反的,即:x86的pc机cpu在运行的时候程序是存储在RAM中的,而单片机等嵌入式系统则是存于flash中x86cpu和单片机读取程序的具体途径pc机在运行程序的时候将程序从外存(硬...转载 2019-08-04 09:47:04 · 664 阅读 · 0 评论 -
const, volatile同时修饰一个变量
文章基础:(1) “编译器一般不为const变量分配内存,而是将它保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作。”(2)volatile的作用是“告诉编译器,i是随时可能发生变化的,每次使用它的时候必须从内存中取出i的值”。...转载 2019-08-04 16:10:51 · 848 阅读 · 0 评论 -
C语言的头文件和宏定义的一种使用方法
该方法实现功能:当编译main.c文件时,首先#define MAIN 1,所以在解析头文件variables.h时,根据variable.h中设定的关于MAIN的条件编译,会将A_string[]数组作为变量定义放置在main.c中,生成main.obj目标文件。而如下的flash.c文件在进行编译时,由于没有定义MAIN,所以在解析variable.h时,相当于extern char ...原创 2019-08-05 15:47:08 · 540 阅读 · 0 评论 -
C语言中,头文件和源文件的关系
首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息。(生成.exe文...转载 2019-08-05 16:23:32 · 1356 阅读 · 0 评论 -
TI的CCS如何在编译时发出提示信息
TI的CCS中没有#pragma message()预处理指令,可以使用#warn原创 2019-08-05 19:40:13 · 682 阅读 · 0 评论 -
IEEE754浮点数算数标准
IEEE754规定:单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023; 约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53);下面讲述使用IEEE754标准表示浮点数:176.062...转载 2019-08-08 11:51:15 · 2642 阅读 · 0 评论 -
大端小端与数字的二进制存储
部分1:大端小端概念摘自:https://jocent.me/2017/07/25/big-little-endian.html计算机系统中内存是以字节为单位进行编址的,每个地址单元都唯一的对应着1个字节(8 bit)。这可以应对char类型数据的存储要求,因为char类型长度刚好是1个字节,但是有些类型的长度是超过1个字节的(字符串虽然是多字节的,但它本质是由一个个char类型组成的类似...转载 2019-08-08 22:18:23 · 1041 阅读 · 0 评论 -
深入谈谈整型、浮点型在内存中的存储方式
一、正整型正整型,没什么好说的,就是补码存储方式,正数的补码和原码相同,即先转换为二进制,然后高位扩展0,一直填充至32位……比如:5这个数的存储方式如下先转换为二进制:101因为只有3位,所以前面填充29个0,即 00000000 00000000 00000000 00000101二、负整型负整型,跟正整型一样,也是补码存储方式,不过负数的补码计算方式是取绝对值的二进制,按...转载 2019-08-11 14:21:28 · 167 阅读 · 0 评论 -
C语言中的位操作
判断整数的符号普通浏览复制代码int sign(int x){ return (x>>31)|(unsigned(-x))>>31;}.计算绝对值普通浏览复制代码int abs(int x){ int y; y转载 2015-01-25 23:14:58 · 826 阅读 · 0 评论 -
山外论坛每日一贴的学习
要点1: const int *p; // p 可变,p 指向的对象不可变 int const *p; // p 可变,p 指向的对象不可变 int *const p; // p 不可变,p 指向的对象可变·const int *const p; //指针p 和p 指向的对象都不可变在平时的授课中发现学生很难记住这几种情况。这里给原创 2015-01-24 17:22:27 · 3833 阅读 · 0 评论 -
找工作时总结的一些C/C++知…
原文地址:找工作时总结的一些C/C++知识点(1)作者:xianfa110C语言的四个变量存储类分别是:auto, register, extern,static1. autoauto 可以省略不写,是局部变量,作用域限于所在函数或模块。2. registerregister变量作用域和auto变量相同。变量保存在寄存器中,只是对编译程序的一种建议,不是强制性的,比如当前CPU中所有寄存转载 2014-11-13 23:08:15 · 758 阅读 · 0 评论 -
一道经典的C++竞赛题
原文地址:一道经典的C++竞赛题作者:xianfa110已知n个整数 x1,x2,…..xn, 以及一个整数k (k<n)。从 n个整数中任选k个整数组合相加,可分别得到一系列的和。例如当 n=4, k=3,4个整数分别为3,7,12,19时,可得全部的组合为: 3+7+12=22 3+7+19=29 7+12+19=383+12+19=34。 现在,要转载 2014-11-13 23:08:17 · 4093 阅读 · 2 评论 -
C语言中.h和.c文件解析(很精彩)
http://www.cnblogs.com/laojie4321/category/369402.html 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件(.原创 2014-11-13 23:08:20 · 706 阅读 · 0 评论 -
关于typedef的用法总结
关于typedef的用法总结来自: 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我原创 2014-11-13 23:08:30 · 338 阅读 · 0 评论 -
算法与数据结构
http://blog.csdn.net/hcx25909/article/category/2397263原创 2014-11-13 23:08:57 · 385 阅读 · 0 评论 -
#pragma宏解析
来自:http://blog.csdn.net/feisy/article/details/2108702The #pragma pack(n).directive is the same as using the #pragma option specifically with the -a compiler option.原创 2014-11-13 23:09:52 · 703 阅读 · 0 评论 -
位域的常用方法
[cpp] viewplaincopytypedef union { u8 Byte; struct{ u8 BIT1 :1; u8 BIT2 :1; u8原创 2014-11-13 23:10:02 · 513 阅读 · 0 评论 -
fab()与abs()绝对值函数区别,一个…
fab()与abs()绝对值函数区别,一个是浮点型,一个是整型原创 2014-11-13 23:07:01 · 4929 阅读 · 0 评论 -
C语言中memset函数详解
原文地址:C语言中memset函数详解作者:追梦海星功 能:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include #include #include转载 2014-11-13 23:07:04 · 360 阅读 · 0 评论 -
typedef用法总结之续
来自:http://www.cnblogs.com/csyisong/archive/2009/01/09/1372382.htmltypedef用法总结之续 刚刚看了一篇也是关于typedef用法的文章,跟先前看的那篇文章内容大同小异,不过有一处让我收获不小,就是在上篇最后那个案例我不理解的地方,这篇文章给了一个很好的答案。以下是文章的部分内容: 陷阱一:原创 2014-11-13 23:08:33 · 370 阅读 · 0 评论 -
C语言变量声明加冒号的用法
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域原创 2014-11-13 23:08:47 · 520 阅读 · 0 评论 -
正确解析C语言中的复杂声明
来自:http://www.vcan123.com/forum.php?mod=viewthread&tid=124在CU的C/C++版上看到一些比较复杂的函数声明:普通浏览复制代码void (*(*p) (void *(*) (char *, long , long ))) (char *, long , long);voi转载 2015-01-25 22:32:31 · 479 阅读 · 0 评论 -
C语言宏条件编译详解
来自:http://www.picavr.com/news/2009-08/1064.htm预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前转载 2015-01-25 16:20:00 · 554 阅读 · 0 评论 -
几道典型的C++笔试题
原文地址:几道典型的C++笔试题作者:xianfa110下面这个程序执行后会有什么错误或者效果: #define MAX 255 int main(){ unsigned char A[MAX],i; for(i=0;i A[ i ]=i;}解答:MAX=255数组A的下标范围为:0..MAX-1,这是其一..其二.当i循环到255时,循环内执行: A转载 2014-11-13 23:06:59 · 445 阅读 · 0 评论