自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UNIX环境编程基础

mycopy实例重写: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(int argc, char *argv[]) { int fsrc; int fdst;

2022-05-03 20:58:06 649

原创 linux常见指令

linux常用命令 ln:建立连接 df:查看磁盘空间 ps:查看进程状态 lsmod:内核模块列表 mkfs:磁盘格式化 insmod:加载内核模块 lsmod:内核模块列表 modprobe:内核模块管理工具 find:查找文件 grep:查找文件内容 sudo find / -amin -15 查找最近15分钟访问过的文件 sudo find / -atime -2 查找最近48小时访问过的文件 sudo find /-empty 查找空文件或者文件夹 sudo find /

2022-05-01 18:24:45 108

原创 linux串口操作

【串口操作方式】 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <errno.h> int main() { int fd;

2022-05-01 17:57:43 1319

原创 Socket套接字

Socket套接字 Socket常被翻译成套接字或者插口,Socket实际上是网络上的通信端点。 在使用Socket通信之前,需要创建socket对象,通常使用socket()函数创建socket()对象。 int socket(int domain, int type, int protocol); domain:指定使用的域,通常是ipv4,ipv6等;AF_INET表示IPv4协议。 type:指定数据传输的方式,SOCK_STREAM:面向连接的数据流方式,SOCK_DGRAM:无连接的数据报方式。

2022-05-01 17:53:40 972

原创 多线程开发

**线程:**线程是一种轻量级的进程,线程是操作系统调度的最小单位,可以理解为一个进程是一个或者多个线程组成的。Linux系统开发多线程程序大多使用pthread库,其操作函数基本都以pthread开头。 创建线程的函数定义如下: int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(start_routine)(void), void *restrict arg); thread

2022-05-01 17:38:55 502

原创 多进程开发

**进程:**Linux系统至少有一个进程,一个程序可以对应多个进程,一个进程只能对应一个程序。 由于历史原因,大多数UNIX系统的main()函数定义为: int main(int argc, char *argv[ ], char *envp[ ]); argc表示参数argv有多少个字符串,argv表示一个不定长的字符串数组,envp以name=value的形式存放了一组进程中会用到的环境变量。 环境变量: 读取环境变量:getenv(); 设定环境变量:putenv(); char *getenv(

2022-05-01 17:24:44 298

原创 内存管理和使用

**堆栈:**堆和栈只有在程序运行时才存在,一个计算机应用程序在内存中可以分为两个部分:代码段和数据段,代码段存放用户编写的代码,数据段可以分为堆和栈。 **BSS区:**存放未初始化变量,BSS存放的数据在开始执行之前被内核初始化为0或者空指针(NULL)。 gcc hello.c -o hello 显示结果如下: lwb@ubuntu:~$ size hello text data bss dec hex filename 1515 600 8 2

2022-05-01 17:02:08 375

原创 小端字节序下数据存储函数改写

STM32存储数据是小端字节序存储,标准库函数下会默认拷贝数据时由高地址向低地址拷贝,程序1为正序拷贝函数。 void mymemcpy(void *dst, void *src, int n) { char *pdst=(char *)dst; char *psrc=(char *)src+n-1; while(n--) { *pdst++=*psrc--; } } STM32存储数据是小端字节序存储,以下两个函数可以实现高低位的互换。 unsigned int myint

2021-09-03 16:37:26 92

原创 静态库和动态库

(一)静态库的创建及使用:(新建目录:mkdir static,在此目录下进行操作) 1 创建主函数和两个子函数,主函数内部将会调用子函数; 2 将两个子函数打包成静态库函数; 3 编译主函数时进行链接创建好的静态库; 详细步骤: 一 创建主函数和两个子函数 1 vi add.c int add(int a,int b) { return a+b; } 2 vi max.c int max(int a,int b) { return a>b?a:b; } 3 vi staticmain.c(主函数

2021-05-29 21:24:16 107

原创 树莓派引脚编程

(一)认识树莓派wiringPi库 1 wiringpi库:包含的API接口有GPIO控制口,中断,多线程等。 2 查看GPIO引脚编号表: 命令:gpio readall (二)使用wiringPi库对树莓派引脚编程 1 针对gpio7引脚的高低电平编程: 命令:vi gpio1.c #include <wiringPi.h> #include <stdio.h> int main() { int cmd; if(wiringPiSetup()==-1) //wiringPi

2021-05-29 20:56:42 319

原创 树莓派串口通信

一,树莓派串口通信准备步骤 1 利用xshell或者putty等软件进行网络连接树莓派 2 修改 cmdline.txt文件,解除串口被当做电脑与树莓派的交互界面,使得其可以进行数据交互发送。 命令: cd /boot/ sudo vim cmdline.txt 删除【】之间的部分: dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=

2021-05-29 20:38:13 552

原创 linux文件系统

文件系统:文件管理系统(是一个大的程序),简称文件系统。命令:ls fs 挂载点的意义:挂载是将文件系统和目录树结合在一起的操作,挂载点是个目录,且该目录是文件系统的入口。 inode: 索引节点,本质是结构体构成的数据结构,包含了与文件系统中各个文件相关的信息。 superblock: 记录filesystem的整体信息 block:记录档案内容。 inode:记录档案属性,同时记录档案中数据所在的block号码。 df命令:查看已挂载的文件系统。 /bin目录:记录了常用的命令:cat chgrp

2021-05-29 20:11:54 93

原创 linux文件操作

Linux的文件类型有7种: 普通文件:Regular file 目录文件:Directory file 块设备文件:Block special file 字符设备文件:Character special file 命名管道文件:FIFO 套接字文件:Socket 符号链接文件:Symbolic link 普通文件:分为文本文件和二进制文件,文本文件是字符文件,就是我们可以直接查看的文件,例如我们编写的C语言程序(vi filename即可直接查看)二进制文件表示的是信息在内存中的格式,例如C程序编译过后

2021-05-29 19:46:02 85

空空如也

空空如也

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

TA关注的人

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