自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

转载 51单片机跳转指令

@ 无条件转移bai指令(共4条)LJMP addr16 ; PC〈—du— addr16AJMP addr11 ; PC〈—— PC+2 , PC10-0〈—— addr11SJMP rel ; PC〈—— PC+2 , PC 〈—— PC+relJMP @A+DPTR ; PC〈—— A+DPTR第一条指zhi令称为长转移指令(Long Jump);第二条指令叫作绝对转移指令(Absolute Jump);第三条指令称作短转移指令(Short Jump);第四条指令是变址寻址转移指令(散

2020-06-06 16:42:02 6594

转载 图解I2C写法

标准I2c是从高位到低位发送//IO 口模拟起始信号//产生起始信号void I2C_Start(void){ I2C_SDA_OUT(); //对于有准双向的IO口,可以不设置SDA的输入输出模式。比如51单片机。 I2C_SDA_H; I2C_SCL_H; delay_us(5); I2C_SDA_L;...

2019-05-27 13:23:07 1529

转载 矩阵键盘

矩阵键盘的原理及应用 - MARS的博客 - CSDN博客 https://blog.csdn.net/qq_40642465/article/details/80334530矩阵键盘原理图:第一行的行控制线接到p17,第二行的行控制线接到p16,第三行的行控制线接到p15,第4行的行控制线接到p14第一列的列控制线接到p13,第二列的列控制线接到p12,第三列的列控制线接到p11,...

2019-05-27 11:05:19 20997 3

转载 inet_aton、inet_addr和inet_ntoa

地址转换函数:inet_addr& inet_networkinet_aton & inet_ntoa 和 和inet_pton & inet_ntop1、先了解一下需要用到的数据类型。typedef uint32_t in_addr_t;in_addr_t这个类型保存的数据,到底是按本机字节序保存的,还是网络字节序保存的,这是不确定的...

2019-05-25 15:50:34 4350

转载 STM8库函数开发资源和基本步骤摘要

1、EWstm8多个版本下载IAR EWSTM8系列教程01_IAR介绍、下载、安装和注册 - 知乎 https://zhuanlan.zhihu.com/p/42499895下载地址:https://pan.baidu.com/s/1slF5kYx#list/path=%2F https://pan.baidu.com/s/1slF5kYx#list/path=%2F...

2019-05-23 16:49:46 9812 2

转载 switch case、goto对变量定义的影响

dingmz_frc的博客http://blog.163.com/dingmz_frcmyblog/blog/static/217304023201372085320739/在使用switch case和goto时感觉很开心,程序跳来跳去,不用再无脑的执行运行了!但是,如果不懂其原理,则很容易出错!而且很奇葩的错误哦。说明:这篇文章的分类是C++,所以特此声明这里提到的规则只适用于C++。对于C语...

2018-02-26 16:25:05 1373

转载 linux kernel中的变长参数宏

http://blog.163.com/kmustchenb@126/blog/static/1109057652012122111549895/1 函数声明   首先,要实现类似printf()的变参函数,函数的最后一个参数要用 ... 表示,如   int log(char * arg1, ...)  这样编译器才能知道这个函数是变参函数。这个参数与变参函数的内部实现完全没有关

2018-02-01 09:29:35 277

转载 linux write 函数 是否是 线程安全的?

http://bbs.chinaunix.net/thread-4187636-1-1.html我做了两个实验:第一个实验,创建一个本地文件,然后用5个线程对这个文件进行写入,结果前面的写入内容被后面的写入内容覆盖;对write函数加锁之后结果就正常了,就似乎验证了write函数是非线程安全的。第二个实验,创建一个客户端的TCP socket,然后用5个线程对这个socket进

2018-01-22 08:23:33 3775 1

原创 indent 之后很多^M

Vim里常见的几个不可见字符:^@ = 0x00 Null值^I = 0x09 水平制表^J = 0x0A 换行^M = 0x0D 回车先要替换掉ubuntu自带的反人类的vim-tiny命令如下:卸载:sudo apt-get remove vim-common然后安装:sudo apt-get installl vim一次从网

2018-01-16 17:02:46 512

转载 Makefile中的$@, $^, $< , $?, $%, $+, $*

http://blog.csdn.net/Jeffrey0000/article/details/12421317记性不好,多写博客 $@  表示目标文件$^  表示所有的依赖文件$$?  表示比目标还要新的依赖文件列表 $% 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是“foo.a(bar.o)”,那么,“$%”就是

2018-01-07 21:51:35 82591 1

转载 如何获取byte的各个bit值以及常见位操作

如何获取byte的各个bit值以及常见位操作https://www.cnblogs.com/Joanna-Yan/p/5080935.html项目中通过信号采集板的数据获取车上仪表盘指示灯的信息,将接收到的数据转成byte后,还要将每一个Byte的各个Bit值分离出来,这样才知道每个bit的值代表的具体信息。这里记录下如何获取byte的各个bit值,一些常见的位操作也顺便记录下

2017-12-28 08:56:32 23393

原创 Cjson中pow2gt函数简单分析

Cjson中pow2gt函数简单分析2016年10月13日作者:cstriker1407暂无评论最近看了下cjson,发现里面有个比较好玩的函数static int pow2gt (int x){   --x;    x|=x>>1;  x|=x>>2;  x|=x>>4;  x|=x>>8

2017-12-28 08:35:17 1099

转载 信号量、互斥锁、条件变量的区别

来自:http://blog.chinaunix.net/space.php?uid=23061624&do=blog&cuid=2127853 信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程

2017-12-26 17:52:26 297

转载 一个常见的错误pthread_create()的参数

LINUX 传递‘pthread_create’的第 3 个参数时在不兼容的指针类型间转换LINUX SUSE SP4环境gcc编译报标题的警告,执行时报段错误代码如下void * xxx(int *xa){...}int main(int argc, char* argv[]){...int xxa;pthread_create(&threadID,

2017-12-25 10:32:33 3915

转载 在不知道json格式的情况下如何使用cjson进行解析

在不知道json格式的情况下如何使用cjson进行解析转载自:https://www.cnblogs.com/fengbohello/p/4537436.html假设我们有一个json字符串,但是我们不知道这个json的组织方式,那么如何进行解析呢,下面就给一个小例子。1、我们的json串如下:假设我们有一个json字符串,但是我们不知道这个json的组织方式,那么

2017-12-22 17:09:54 869

转载 理解端口复用(四元组)

唯一能够确定一个连接有4个东西:1. 服务器的IP2. 服务器的Port3. 客户端的IP4. 客户端的Port服务器的IP和Port可以保持不变,只要客户端的IP和Port彼此不同就OK了。一个socket是可以建立多个连接的,为了阐释这个概念,你应该先明白一个TCP连接的标记为一个四元组(source_ip, source_port, destination_i

2017-12-12 22:12:42 9999 4

转载 linux C 正则表达式函数库

Linux下C语言正则表达式使用详解 - Google Chrome (2013/5/2 16:40:37)Linux下C语言正则表达式使用详解2012年6月6日Neal627 views发表评论阅读评论标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatib

2017-12-04 13:57:43 1261

转载 一篇文章完全搞清楚 scoket read/write 返回码、阻塞与非阻塞、异常处理 等让你头疼已久的问题

【Netwo  浅谈TCP/IP网络编程中socket的行为 我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉:1. TCP/IP协议(如连接的建立和终止、重传和确认、滑动窗口和拥塞控制等等)2. Socket I/O系统调用(重点如read/write),这是TCP/IP协议在应用层表现出来的行为

2017-12-04 09:08:39 4686

转载 SecureCRT连接虚拟机中的Linux系统(Ubuntu)

SecureCRT连接虚拟机中的Linux系统(Ubuntu)[日期:2015-05-05]来源:Linux社区  作者:xuliangxing[字体:大 中 小]  最近在学习Linux,看了网上很多SecureCRT连接本地虚拟机当中的Linux系统,很多都是需要设置Linux的配置文件,有点繁琐,所以自己就摸索了一下,把

2017-12-03 22:02:17 212

转载 Linux下patch的制作和应用

Linux下patch的制作和应用转自:http://blog.chinaunix.net/u3/100239/showart_1984963.html实例:https://blog.csdn.net/sahusoft/article/details/4401561首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会...

2017-11-20 21:44:02 159

转载 vim下的配置

Vim默认的配置使用起来还不能让人满意,还需要自己配置 默认配置文件是:/etc/vim/vimrc我们可以在家目录下建立自己的配置文件切换到家目录 #cd ~touch一个名为.vimrc的文件(以.开头的为隐藏文件)#touch .vimrc#vi .vimrc输入以下配置:set nocompatible      不使用vi默认键盘布局  set num

2017-11-17 15:41:30 281

转载 C语言中代码中的换行

区分不同情况,有多种方式可以采用。A、在预编译里面不管是哪种情况,都可以用\结尾作为换行标记,在编译时,\后面的换行符将被忽略,当做一行处理。比如宏定义时使用#define my_puts(x) printf("%s", \ x);和写作#define my_puts(x) printf("%s",x);是没区别的。 这里的\必须存在,不能省略。B、不过有些情况下可以采用

2017-11-16 18:08:04 104332 2

原创 linux C下 利用宏函数打印调试信息

/*****************************************************这个代码里面把字符串根据指定的分割符可以拆分,合并主要是运用了一个宏来打印调试信息函数调试好以后可以注释掉此行使,程序打印调试信息的代码不编译进去******************************************************/#inc

2017-11-16 17:20:31 1646

转载 怎样理解阻塞非阻塞与同步异步的区别?

https://www.zhihu.com/question/19732473老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了

2017-11-15 14:32:50 146

转载 二维数组所有元素初始化为0

一、初始化;char a[3][3]={0};二、    1.char a[3][3];    2.memset(a,0,sizeof(a));三、如果是动态分配内存方式构建数组的话,把malloc函数改用成calloc函数。

2017-11-08 14:49:15 77029 8

转载 vim——打开多个文件、同时显示多个文件、在文件之间切换

http://www.cnblogs.com/hnrainll/archive/2011/04/29/2032662.html打开多个文件:1.vim还没有启动的时候:在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:open file可以再打开一个文件,并且此时vim里会

2017-11-08 08:26:39 733

转载 使用strchr把字符串中的把#分割的字符串取出分到一个二维数组中

函数原型:extern char *strchr(char *str,char character)参数说明:str为一个字符串的指针,character为一个待查找字符。        所在库名:#include   函数功能:从字符串str中寻找字符character第一次出现的位置。  返回说明:返回指向第一次出现字符character位置的指针,如果没找到则

2017-11-07 11:02:10 531

原创 atoi会忽略前面字符串的空格

#include#includeint main(void){   float n;   char const *str="12345";n=atoi(str);   printf("string=%sfloat=%f\n",str,n);   return 0;}//string=   12345float=1234

2017-11-06 16:53:02 1419

转载 重定向理解

在unix下,输出到终端与输出到文件本质是一样的;三个标准数据流,stdin,stdout,stderr只是三个特殊的文件而已(而且大部分时候它们是一样的)每个程序都有一张文件表,该表记录了该程序打开的文件。默认情况下就打开了stdin,stdout,stderr。当执行ls的时候,程序输出到stdout,指向终端显示。当执行ls > 123的时候,bash首先以写的方式打开(如果没有

2017-11-06 14:12:56 196

转载 setsockopt中参数之SO_REUSEADDR的意义(转)

http://www.cnblogs.com/qq78292959/archive/2013/01/18/2865926.html1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。    SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应

2017-11-03 10:26:47 305

转载 INADDR_ANY的确切含义

rainbow70626http://www.cnblogs.com/rainbow70626/p/5590669.html INADDR_ANY就是inet_addr("0.0.0.0")        首先,需要明确的是当服务器的监听地址是INADDR_ANY时设置的是服务器的IP地址。   其次,当服务器的监听地址是INADDR_ANY时含义是让服

2017-11-03 10:12:24 589

转载 pthread_join和pthread_detach详解

https://www.2cto.com/kf/201304/199897.html在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。    默认

2017-11-03 09:50:19 169

转载 sigaction()之sa_mask

http://www.cnblogs.com/black-mamba/p/6876320.htmlsigaction()之sa_maskman文档描述:sa_mask gives a mask of signals which should be blocked during execution of the signal handler. In addition, t

2017-10-28 21:27:56 422

转载 linux信号

http://book.51cto.com/art/201604/510323.htm5.3.2 信号(1)《Linux环境编程图文指南》本书内容翔实,囊括了Linux系统操作细节,Shell脚本编程精要,各种编程环境所需要解决的技术难点,以及在Linux环境下的C语言编程技术、并发编程技术和音/视频编程等核心内容。本节为大家介绍信号。作者:林世霖/钟锦辉/李建辉来源:电子工业出版

2017-10-28 20:34:35 233

转载 linux C之alarm函数

http://blog.sina.com.cn/u/1779972073alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代

2017-10-28 11:23:06 249

转载 对STDOUT_FILENO的理解

分类: 嵌入式   在linux系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FILENO,标准出错用STDERR_FILENO.请问,他们有什么区别吗?    stdin等是FILE *类型,属于标准I/O,在。    STD

2017-10-27 18:03:15 17978

转载 ioctl 时常常跟 read, write 混淆

http://www.cnblogs.com/huangxingkezhan/archive/2012/12/25/2832655.html在学习ioctl 时常常跟 read, write 混淆。其实 ioctl 是用来设置硬件控制寄存器,或者读取硬件状态寄存器的数值之类的。而read,write 是把数据丢入缓冲区,硬件的驱动从缓冲区读取数据一个个发送或者把接收

2017-10-26 11:04:57 2128

转载 Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

转载请注明: Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 | 学步园 +转载自 http://www.xuebuyuan.com/282373.html在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下。c_cc[VTIME]和c_cc[VMIN]映像read函数的返回。VTIME定义

2017-10-26 09:20:19 10248 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除