自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 智能垃圾桶小车

舵机模块舵机模块在智能垃圾桶中用于配合超声波模块开关垃圾桶的盖子,当超声波模块检测到有物体小于5cm的时候舵机会旋转90度,以达到打开盖子的目的。舵机原理:树莓派不能直接输出模拟电信号,但我们可以使用PWM(脉宽调制)方法来模拟这一点。我们制作一个固定频率的数字信号,在那里我们将改变脉冲宽度,将“转换”改为“平均”输出电压的电平,如下图所示:请注意频率本身不是重点,而是“占空比”,即脉冲...

2019-09-04 08:36:59 1439

原创 linux动态库和静态库

精彩博文: https://www.zhihu.com/question/20484931库:一些经常使用、经过检验的规范化程序或子程序的集合。库的分类:动态库:动态库在程序运行之后,在需要调用该库中的函数的时候才会被加载到内存,并且多个程序可以复用同一个在内存中动态库。(有两类,一种是与绝对地址寻址无关的,这个就可以多进程共用一个内存中的库,另外一种是绝对地址寻址相关的,每个进程都需要一...

2019-08-29 14:50:13 159

原创 初探树莓派

烧写系统将编译器简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。在linux中使用的...

2019-08-26 17:31:08 160

原创 linux系统编程之多线程

博客推荐:https://blog.csdn.net/tiandc/article/details/81489308

2019-08-22 14:53:46 127

原创 linux系统编程小项目——仿ftp

项目要求日志模块日志模块需要向文件里面输出信息,所以我们希望能像printf一样参数个数可变,所以声明时带上变量 …,void log_write(const char *format, …);,该函数用法与printf一样——在函数内部需要使用其他东西来接收这个个数可变的参数,所以我们使用了va_list ,(参考: https://blog.csdn.net/qq_19923217/ar...

2019-08-18 18:41:05 425

原创 linux系统编程之网络编程

1.网络编程的概念在学习了进程之间的通信(管道,消息队列,信号,共享内存,信号量)之后,发现他们都有一个特点,那就是依赖于内核,只能做到在同一台设备中的两个进程进行相互沟通。而网络编程通过某种协议,将想要发送或着接收的数据打包/解析,可以实现通过网络,处于不同终端的进程进行通信。网络编程必须的有两点,数据和地址,地址包括IP地址和端口号。端口号的作用是用来区分不同服务的。2. 字节序字节序...

2019-08-12 14:27:16 655

原创 linux系统编程之进程间的通信

1. 进程通信的概念在同一台pc机上的两个进程通信是单机通信,不同的pc机上的两个进程通信叫多机通信。IPC(interprocess communication)也就是进程通信。简单的来说就是两个进程之间能够互通有无。可以参考博文: https://blog.csdn.net/lyn_00/article/details/84789508进程间通信使用的工具:精彩博文推荐: http...

2019-08-08 16:06:22 187

原创 linux系统编程之进程编程

1.概念1.程序是静态的概念,一般来说可执行文件就是程序,进程就是一段运行中的程序,2.ps指令,-aux显示全部 ,配合管道符和grep来查找自己想要查看的进程3.pid是进程标识符,每个进程有唯一的进程标识符,pid为0是交换进程,作用是进程调度,pid为1是init进程,作用是系统初始化。getpid()可以获得当前进程的进程号,getppid()可以获得当前进程的父进程的进程号...

2019-08-06 11:11:13 370

原创 嵌入式学习第15、16、17天

c语言综合之基于Ncurses的贪吃蛇1.运行结果演示2.

2019-08-05 15:37:51 106

原创 linux编程之文件编程

1.头文件sys/types.hsys/stat.hfcntl.h2.文件编程之APIopen(pathname,flag) 打开文件pathname:文件路径名字,flag:O_RDONLY 只读,O_WRONLY只写,O_RDWR可读可写。 打开成功返回的是非负数,失败返回的是-1如果两个参数的open函数打开失败了就用到了三个参数的open函数。fd=open("./t...

2019-07-31 15:47:37 493 1

原创 wifi模块初体验

1.WiFi模块工作模式1.AP模式 提供热点2. STA模式 接入热点3. 同时支持AP+STA2.wifi模块与PC机服务器建立TCP连接可以查看该网址的教程: https://wiki.ai-thinker.com/esp8266/examples/at_democh_pd 要接高电平 ,AT指令:https://blog.csdn.net/lailaiquququ11/...

2019-07-27 14:08:57 187

原创 学习嵌入式第十四天

1.51单片机串口通信,定时器,中断计时器编辑延时函数(单片机为12T的情况下)每12个时钟得到一个计数脉冲,计数值加1概念: 机器周期 :一个机器周期 = 12s*晶振频率的倒数。 时钟周期: 晶振频率的倒数 , 12个时钟周期为一个机器周期16位计时器,65536是他的最大值,又因为加一次一为一个机器周期,所以计数器一次溢出的时间为65536*机器周期。11.52Mhz...

2019-07-27 14:08:08 206

原创 学习嵌入式第十二天十三天

十二天1.51单片机中断,定时器,串口通信1.1 标志:TF——定时到标志;TI——串口发送缓冲器空标志;RI——串口接收缓冲器空标志;1.2 中断何时发生当CPU检测到中断标志时,CPU会调用中断服务函数。中断服务函数不能被其他函数调用。中断有优先级,根据优先级来处理中断单片机引脚中的INT0 是外部中断0,INT1是外部中断11.3 中断原理...

2019-07-25 12:03:35 140

原创 学习嵌入式第十一天

十一天1.c语言基础之链表二级指针细节在传参为二级指针的时候在函数里最好是用一个一级指针取接收这个二级指针,不要直接操作这个二级指针,因为一般这个二级指针存放的是链表的头节点的地址,直接操作可能使链表长度发生变化以下为demo代码(注释掉的为错误用法):#include <stdio.h>#include <stdlib.h>struct Student ...

2019-07-24 11:09:32 87

原创 学习嵌入式第十天

第十天1.c语言基础之链表插入节点p指针遍历链表,假如要插入到id为5的节点后面,当p遍历到id为5的节点时,让新节点的next指向p的next,然后让p的next指向新节点。2.c语言基础之链表删除节点p指针遍历链表,假如要删除id为5的节点,当p遍历到id为4的节点时(遍历条件为 p != NULL && p->next != NULL),让一个新的指针指...

2019-07-22 19:11:49 84

原创 学习嵌入式第九天

第九天指针结构体回顾:1.c语言基础之链表1.1 链表是一种数据结构将零散的结构体通过指针的方式建立联系,就是链表。每个结构体称为节点。即上一个节点中存放着一个指针指向下一个节点的地址。最后节点中的指针指向NULL。1.2 动态生成链表尾插法:使head指针和tail指针指向同一个节点,初始化new节点(新节点)使其指向NULL,然后让tail->next = new与...

2019-07-19 17:00:30 96

原创 学习嵌入式第八天

第八天1.c语言基础之结构体概念1.1为什么需要结构体普通变量 整型 字符型 无法满足业务场景,需要自创数据类型。1.2c语言基础之结构体语法规则1.2.1 结构体名字首字母大写,做到区分。1.2.2 自创数据后,结尾一定要加分号。1.2.3 什么叫自创数据类型,已有的如int,char,我们自创的struct Student 才是自创的数据类型。1.3 c...

2019-07-18 15:24:59 125

原创 学习嵌入式第七天

第七天1. c语言基础之访问变量的方式1.1直接访问直接访问变量 printf(“%d”,a);1.2间接访问使用地址访问变量 ,用 * 号取地址对应的变量的值。int *p; p= &a; printf(“%d”,*p);2.c语言基础之存放地址的变量----指针变量2.1 注意类型的匹配类型 *指针变量名 此类型要与...

2019-07-17 17:45:08 87

原创 学习嵌入式第六天

第六天1. c语言基础之结构体1.1 结构体是什么结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。1.2结构体声明与定义结构...

2019-07-16 17:49:03 76

原创 学习嵌入式第五天

第五天1. c语言基础之第一次测试错题解析1.1 int i =0; printf("%d %d",i,i++);输出 1 0 ,是因为printf是从右边开始执行,第一个 i++ 先取值再运算,i++ 这一个输出的是0,然后i的值从0自增到1 ,所以输出 1 02.gdb调试工具基础条件 : 编译加 -g ,增加调试信息gcc -g test.c -o te...

2019-07-15 17:26:25 86

原创 学习嵌入式第四天

第四天1. 代码管理工具svn,Git,vim1.1 svn的安装sudo apt-get install subversion装了一下午。。。。。。-2.恶补linux基础2.1 linux文件属性ls -l 查看文件的属性d表示目录,-表示普通文件,l表示链接文件,c表示字符设备,b表示块设备 权限第一位r 可读 w 可写 x 可执行 对于文件来...

2019-07-13 23:24:18 88

原创 学习嵌入式第三天

第三天c语言基础之数组排序选择排序用两个循环来进行排序,第一个循环控制循环的次数,第二个循环控制比较的次数。第一躺时第一个元素依次跟其后的元素比较选择出最大或者最小的值放在第一个位置,第二趟第二个元素依次跟其后的元素比较选择出第二大或者第二小的值放在第二个位置,以此类推。冒泡排序用两个循环来进行排序,第一个循环控制循环的次数,第二个循环控制比较的次数。两两比较选择出相...

2019-07-11 17:45:06 74

原创 学习嵌入式第二天

第二天1. c语言基础1.1 数据的输入输出printf("%d,%c \n",a,b);格式控制 %d ,%c ,%f ,%lf ,%s ,%m.nfscanf 用法: scanf 有两个参数,参数一是 字符串,字符串中可有一个或多个控制符,参数二是相应变量的地址scanf存在的一些问题:scanf("%d%d%d",&a,&b,&c); 此...

2019-07-10 17:16:17 87

原创 学习嵌入式第一天

第一天linux基本操作命令xrandr -s 分辨率 修改linux系统分辨率pwd 查看当前目录ls 查看当前目录所包含的文件 -a 显示所有文件(包含隐藏文件)cd 进入某目录 , … 表示上级目录 , . 表示当前目录 , - 表示上一步操作时路径 , / 表示根目录cp 旧文件 新文件 复制文件操作mv a b ...

2019-07-09 21:34:03 156

空空如也

空空如也

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

TA关注的人

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