自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

原创 IEC 104协议一次发送大量I帧数据

IEC 104协议如何一次发送大量I帧数据

2023-03-29 17:19:54 2283

原创 小数在c语言中默认为double类型

c语言默认小数为double类型数据,double为双精度数据类型,精确到小数点后15到16位,但是运行速度不及单精度float数据快

2022-12-12 14:29:39 548

原创 android打开文件报错open failed:EACCES(permission denied)。避免以后踩坑。

刚开始碰到这样的问题按照惯例无非就是首先在manifests文件中添加权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />因为android 6.0后应用不能这样设置权限,需要在代码中动态设置添加,于是在代码中动态获.

2022-02-22 16:11:54 5853 3

原创 android建立socket连接的几种情况

一,建立阻塞连接Socket clientSocket = new Socket("xx,xx,xx,xx",xxxx);二,建立非阻塞连接(设置超时时间)Socket clientSocket = new Socket()try{clientSocket .connect(new InetSocketAddress("xx,xx,xx,xx",xxxx),timeout);}catch(IOException e){e.printStackTrace();}...

2021-12-29 10:46:57 2032

原创 NULL和‘0‘,0的关系

用printf(“%d,%d”,NULL,’\0’);最终打印都为0查询ASCII码对照表NULL的值也为0所以NULL和’\0’自己0值是相等的,但是他们一个是代表指针一个是代表字符,一个代表整型意义不一样。

2021-12-20 10:35:30 584

原创 查看某进程状态信息

首先用ps -aux命令查询该进程的pid号cd /proc/pidcat status-----------------------------------------------------------------------------------------------------------Name: catState: R (running)SleepAVG: 88%Tgid: 5783Pid: 5783PPid: 5742TracerPid: 0Ui...

2021-08-12 10:07:25 753

原创 为什么top命令查看有的进程cpu使用率超过100

top命令查看cpu使用率指的是该程序占用几个总核数的使用率,比如4核,那么最高使用率为400

2021-08-12 09:25:10 780

原创 linux开机自动挂载

只需要修改/etc/fstab文件就行:如:把磁盘分区/dev/hdc6挂载到/mnt/hdc6目录下再里面添加一行/dev/hdc6 /mnt/hdc6 ext3 defaults 1 2

2021-07-08 11:06:11 78

原创 linux命令行的替换命令sed

sed -i ‘s/printf/LOGE/g’ test.c注释:把test.c文件中的printf替换成LOGE-i表示直接在文本中修改不打印输出

2021-06-18 15:20:39 73

原创 内联函数

内联函数可以加速程序的运行速度,因为不需要中断调用,可以直接嵌入到代码中

2021-05-04 12:20:21 73

原创 挂载usb设备到指定目录

mkdir /mnt/USB如果是vfat格式mount –t vfat /dev/sdb1 /mnt/USB如果是ext2格式mount -t ext2 /dev/sda1 /mnt/USB

2021-04-05 22:57:24 300

原创 野指针和垂悬指针

野指针:指向一个已经被销毁或访问受限的内存区域的指针。可能产生的情况1、free了后,没有将指针置null,成了垂悬指针。2、没有初始化指针,并且就这样直接去访问这个指针。3、指针操作超越了变量的作用域范围,如数组越界。4、返回指向栈内存的指针。...

2021-03-24 09:48:41 143

原创 keil编译后已经包含了的头文件里的宏以及声明都无效可能原因

该头文件开头加了#ifndef xxx,而xxx由在其他地方已经定义了,所以导致该头文件里面的所有内容都未生效。

2021-03-17 09:59:10 4785

原创 vmlinux 、Image ,zImage 、uImage 区别

①、vmlinux 是编译出来的最原始的内核文件,是未压缩的,比如正点原子提供的 Linux 源码编译出来的 vmlinux 差不多有 16MB。②、Image 是 Linux 内核镜像文件,但是 Image 仅包含可执行的二进制数据。Image 就是使用 objcopy 取消掉 vmlinux 中的一些其他信息,比如符号表什么的。但是 Image 是没有压缩过的,Image 保存在 arch/arm/boot 目录下。③、zImage 是经过 gzip 压缩后的 Image,经过压缩以后其大

2021-03-15 11:54:40 384

原创 uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式

SVC模式:超级用户模式目的:增大CPU访问权限,有利于硬件初始化

2021-02-20 09:13:32 307

原创 setsockopt函数用法

在TCP连接中,recv等函数默认为阻塞模式(block),即直到有数据到来之前函数不会返回,而我们有时则需要一种超时机制使其在一定时间后返回而不管是否有数据到来,这里我们就会用到setsockopt()函数:int setsockopt(int s, int level, int optname, void* optval, socklen_t* optlen);s(套接字):指向一个打开的套接口描述字level:(级别):指定选项代码的类型。 ...

2021-01-27 09:46:40 1456

原创 可重入函数

可重入函数为了增强程序的稳定性,在信号处理函数中应使用可重入函数。信号处理程序中应当使用可再入(可重入)函数(注:所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错)。因为进程在收到信号后,就将跳转到信号处理函数去接着执行。如果信号处理函数中使用了不可重入函数,那么信号处理函数可能会修改原来进程中不应该被修改的数据,这样进程从信号处理函数中返回接着执行时,可能会出现不可预料的后果。不可再入函数在信号处理函数中被视为不安全函数。可重入函数(即可以被中断的函数)可以被

2021-01-21 11:44:00 366

原创 linux中时间片的分配

时间片轮转调度策略原则:先来先得当调度开始时,将CPU分配给首进程,执行一段时间后,系统会发出信号,调度就会根据接收到的信号停止该进程,并将该进程放到队列的末尾,然后将CPU分配给下一个进程,下一个进程同样重复步骤运行。优先权调度策略有些进程在运行时很紧迫,需要优先处理。优先权调度策略有两种方式:一种是非抢占式优先权策略这种调度策略是系统在将CPU分配给队列中优先权最高的进程后,会首先全速执行完该进程,或者在该进程放弃CPU时,再分配给另一个优先权高的进程。另一种是抢占式优.

2021-01-16 17:51:42 1103

原创 进程等待

进程等待是为了同步父进程和子进程,通常需要通过调用wait()等待函数使父进程等待子进程结束。如果父进程没有调用函数,子进程就会进入僵尸状态。pid_t wait(int * staus)父进程阻塞等待子进程结束。获取子进程的状态值。工作过程:首先判断子进程是否存在,即是否成功创建子进程,如果创建失败,子进程不存在,则会直接退出进程,并且提示相关错误信息;如果创建成功,那么wait()函数就会将父进程挂起,直到子进程结束,并且返回结束时的状态和最后结束的子进程的PID。如果存在子进程,退出子..

2021-01-16 16:46:20 316

原创 linux 软连接和硬链接的区别

4点不同 : (1)软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt/root/bb 连接成功 。ln aa.txt /root/bb 失败 。 (2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直存在 ,不管你删除的是源文件还是 连接的文件 。只要有一个存在 ,文件...

2021-01-09 10:42:47 237

原创 初始化内存池报超出空间错误

加入my_mem_init(SRAMIN);编译后报错错误:.\Objects\f4xx_demo_pro.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss).解决办法将内存池的那些宏改小些:将 #define MEM1_MAX_SIZE 100*1024 改为 #define MEM1_MAX_SI...

2021-01-07 08:59:44 439

原创 共用体在程序编写中可以作为函数的参数传递

在keil5软件中输入如下测试代码编译不会报错(仅测试)union str{ int a; char b;};union str test(union str id){ union str fd; return fd;}

2021-01-04 20:39:34 998 1

原创 判断两个IP是否在一个网段的方法

其实方法也很简单,就是将两个IP地址分别和各自的子网掩码做与运算,最后判断结果是否一样。关键词:网络标识(运算结果)另外主机标识的计算:用IP与取反的掩码做与运算。

2020-12-27 19:35:32 282

原创 字符设备驱动编译出现error:code model kernel does not support PIC mode

原因:直接在官方给的内核编码上编译可能会由于不适配而编译报错解决办法:1、指定平台和编译器:在makefile中添加两行代码ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-2、第一次编译内核前先清理一下:make clean3、配置linux内核:make imx_v7_mfg_defconfig 最后就就可以编译了。...

2020-12-27 18:47:10 1602

原创 linux下调用open函数的流程

2020-12-22 17:01:05 306

原创 为什么C语言中不建议使用goto

goto语句会破坏“结构化”。打个比方,比如你生产一个机器,你会希望零件之间不要发生太紧密的联系,一般用螺丝之类的来连接。如果你把两个零件用电焊焊死,那么一旦一个零件出错,另一个也会受到影响。goto起的作用就像把零件焊死一样。如果程序某一部分因为某种原因必须改动,可能会导致整个程序产生巨大的修改工作量。它使程序的可读性和复杂性变得更差。...

2020-12-22 16:56:17 3465 1

原创 linux驱动类别

linux驱动分为三大类:1、字符设备驱动,也是用的最多的一类。2、块设备驱动,即存储器设备的驱动。3、网络设备驱动。

2020-12-07 23:03:09 642

原创 keil5编译报错error:nonstandard type for a bit field如何解决

一般是keil软件里设置勾选了strict ANSIC加了限制的原因,点击option for target -->c/c++;去掉那个勾选就行了。

2020-11-28 17:07:28 1075

原创 路由器的工作流程

2020-11-06 15:10:20 913

原创 __attribute__( at(绝对地址) )的使用

示例:const u16 gFlashDefValue[512] __attribute__((at(0x0800F000))) = {0x1111,0x1111,0x1111,0x0111,0x0111,0x0111};__attribute__( at(绝对地址) )的作用分两个,一个是绝对定位到Flash,另个一是绝对定位到RAM。1、定位到flash中,一般用于固化的信息,如出厂设置的参数,上位机配置的参数,ID卡的ID号,flash标记等等。2、定位到RAM中,一般用于数据量比较大的缓

2020-11-05 17:00:21 2444 2

原创 同步和异步,单工、半双工、全双工的定义

  同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。   异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。  其中SPI和IIC为同步通信 UART为异步通信, usart为同步&异步通信。  单工数据:传输只支持数据在一个方向上传输;  半双工数据:传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;  全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信..

2020-11-05 16:52:58 2418 2

原创 修改登陆SSH服务器后进入本地自定义路径的方法

  相信好多小伙伴们都遇到过这样的问题,每次打开PuTTY或者XShell登陆SSH服务器后,会默认进入‘~’路径,于是每次都需要重复输入cd /mnt/external/xxx,才能进入到本地路径,其实我们只需要在一个文件里的添加一行代码问题就解决了。修改文件:.bashrc修改步骤:1. 输入vim ~/.bashrc2. 在末尾的最后一行修改添加默认路径,e.g:cd /mnt/external/xxxx/test....

2020-11-04 10:05:07 1565

原创 QPST驱动安装失败的原因以及解决方法

原因:电脑是WIN10系统,会自动签名安装的应用,QPST不支持签名。解决方法:打开设置窗口—>选择更新和安全—>选择恢复—>点击高级启动中的立即重新启动。最后电脑重启进入重启选项窗口,选择禁止驱动签名安装即可。...

2020-11-04 09:26:44 3896

原创 学习makefile笔记

关键字 用法规则 include 在 Makefile 使用 include 关键字可以把别的 Makefile 包含进来,这很像 C 语言的 #include,被包含的文件会原模原样的放在当前文件的包含位置。 在 include 前面可以有一些空字符,但是绝不能是[Tab]键开始。 -include 其表示,无论 include 过程中出现什么错误,都不要报错继续执行。 export ...

2020-11-03 17:05:01 74

原创 解决git提交冲突的方法

解决git提交冲突的方法估计好多人工作中碰到过这样的情况,执行git add和git commit命令然后再输入git push命令时,弹出冲突提示的警告,原因无非就是有同事已经提交更新了远程仓库的代码,这个时候怎么办呢?自己总结了下有以下几种方法:直接pull后再选择merge确认。先输入git stash(作用:暂存代码),然后git pull,再输入git stash pop(作用:合并代码到本地仓库,此时代码是将暂存的代码和远程仓库的代码合并),接着手动修改合并所需的代码,最后输入git s

2020-11-03 16:56:42 1447

原创 socket函数解析

socket函数详细解析网络程序设计中的套接字系统调用socket()用来获得文件描述符。socket()函数的原型如下int socket( int domian, int type, int protocol);这个函数建立一个协议族为domain、协议类型type、协议编号为protocol的套接字文件描述符。如果函数调用成功,会返回一个表示这个套接字的文件描述符,失败的时候返回-1。函数socket()的参数domain用于设置网络通信的域,函数socket()根据这个参数选择通信协议的族

2020-10-27 11:06:21 1539

C#学习之旅.docx

本文档是自学摘录的C#笔记,已经积累了好久的文档,里面有大量经典的问题,分析了解决方法,适合零基础的同学学习。

2020-01-01

串口远程下载程序以及直接写flash保存数据

本帖子针对的是51系列单片机。远程给单片机下载程序的前提是单片机支持IAP功能,我用是IAP11L62X型号单片机,隶属STC11系列,这款单片机没有EEPROM,因此要想存储数据只能用flash模拟EEPROM。另外单片机实现远程下载的之前的先烧录文件里的IAPISP程序。代码已经本人测试过有效。

2019-04-28

STMF103RG系列单片机控制OV2460摄像头程序代码

现成的STM103单片机有关摄像头的程序,将图像数据发送到上位机。此OV2460摄像头模块便宜,有利于节约成本。

2018-08-14

OV528摄像头VGP上位机协议

该协议是建立在传感器OV7725基础上的,希望该文档参考能帮助到他人。

2018-08-14

空空如也

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

TA关注的人

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