自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Makefile的入门学习

在之前的课程,都是直接使用gcc对代码进行编译,这对简单的工程是可以的,但当我们遇到复杂的工程时,每次用gcc等编译工具去操作就会显得很低效。因此make工具就出现了, make的出现是为了解决手动编译和链接大型工程的问题,它可以避免重复的工作,提高效率,保证正确性。make工具就根据makefile中的命令进行编译和链接的。

2024-06-03 20:03:02 1049

原创 Linux静态库、共享动态库介绍、制作及使用

目的地址要等到装载时才能确定,ELF文件的做法是在数据段里面建一个指向这些模块间全局变量的指针数组,也被称为全局偏移表(Global Offset Table, GOT),当代码需要引用模块间全局变量时,可以通过GOT中的表项间接的引用。在编译时可以确定GOT相对于当前指令的偏移,编译器决定GOT内的每一项(4个字节为一项,一个指针)对应于哪一个全局变量名称,也就GOT给出了需要重定位的全局变量有哪些,以及该全局变量相对于GOT的位置。(产生的代码相对较小,而且较快),在有些平台使用小写的。

2024-05-29 15:04:37 1191

原创 OrangePi Zero2 全志H616开发学习文档、基础IO蜂鸣器、超声波测距、舵机PWM基础开发

OrangePi开发板不仅仅是一款消费品,同时也是给任何想用技术来进行创作创新的人设计的。它是一款简单、有趣、实用的工具,你可以用它去打造你身边的世界。

2024-05-13 11:15:28 1137

原创 Linux网络编程

tcp网络编程,服务器和客户端互相通信,发送和接收信息。

2024-05-05 19:29:16 936

原创 进程间通信

无名管道、命名管道、信号、信号量、消息队列、共享内存等

2024-05-01 09:41:00 851

原创 Linux进程

fork、vfork、exit、僵尸进程、孤儿进程、wait、waitpid、exec、system、popen

2024-04-27 10:46:12 1107

原创 Linux系统编程_文件编程

open/fopen、write/fwrite、read/fread、fputc、fgetc、feof

2024-04-24 21:03:38 988

原创 基于Linux的Ncurse库的贪吃蛇项目

它最早由美国伯克利大学的Bill Joy和Ken Arnold编写的,用来处理一个游戏rogue的屏幕显示。后来贝尔实验室的Mark Horton在system III Unix中重新编写了curses。现在几乎所有的Unix,Linux操作系统都带了curses函数库,curses也加入了对鼠标的支持,一些菜单和面板的处理。可以说,curses是Linux终端图形编程的不二选择。上面main函数中存在两个while(1),常规方法无法实现该函数的功能,因此引入线程。

2024-04-22 18:48:06 200

原创 链表及静态创建和动态遍历;链表的增删改查

数据元素在物理位置(内存存储的位置)上不一定相邻。链表从指定节点后方插入新节点。链表从指定节点前面插入新节点。

2024-04-18 18:52:18 779

原创 结构体及应用;结构体指针及应用;union、enum、typedef三个关键字

各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。一个union变量的总长度至少能容纳最大的成员变量,而且要满足是所有成员变量类型大小的整数倍。指针就是地址,指针变量就是存放地址的变量,结构体也是变量。各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个struct变量的总长度等于所有成员的长度之和。通过结构体变量地址来访问该结构体需要一个变量来存放这个地址:和之前的指针是一样的,只是指针类型是结构体。

2024-04-17 15:56:25 1169

原创 II2C协议+Oled屏幕ssd1306

*即屏幕每8行像素点(8PIXEL)记为一页(PAGE),64行即为8页,则屏幕变为128列(ROW)8页(PAGE),**若要显示整个屏幕,则需要1288个1字节数。当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位ACK, 此时才认为一个字节真正的被传输完成 ,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。

2024-04-09 19:29:56 1024

原创 DHT11温度检测系统

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通空调;8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和通讯过程时序图。只有一根数据线DATA,上官一号发送序列指令给DHT11模块,模块一次完整的数据传输为40bit,高位先出。根据如下时序图,做通信初始化,并检测模块是否存在,功能是否正常。DHT11传输0的时序分析。DHT11传输1的时序分析。

2024-04-08 15:07:45 421

原创 LCD1602显示屏

例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B(40H) +10000000B(80H)=11000000B(C0H)LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 16×02 即 32 字符(16列两行)

2024-04-03 19:17:44 1064

原创 蓝牙串口模块、初识AT命令、WiFi模块、WiFi模块使用和编程

AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。AT指令以回车作为结尾,响应或上报以回车换行为结尾。透传即透明传送,是指在数据的传输过程中,通过无线的方式这组数据不发生任何形式的改变,仿佛传输过程是透明的一样,同时保证传输的质量,原封不动地到了最终接收者手里。

2024-04-03 11:03:01 1030

原创 初识UART串行总线,51单片机串口通信

其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。TTL是Transistor-Transistor Logic,即晶体管-晶体管逻辑的简称,它是计算机处理器控制的设备内部各部分之间通信的标准技术。也称标准串口,最常用的一种[串行通讯接口,比如我们的电脑主机的9针串口 ,最高速率为20kb/s。

2024-04-02 16:00:22 755

原创 感应开关盖垃圾桶

舵机控制口 P1.1;超声波Trig接 P1.5 ,Echo接 P1.6;蜂鸣器接 P2.0 口;震动传感器接 P3.2`口(外部中断0)检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。SG90舵机,超声波模块,震动传感器,蜂鸣器。实现物体靠近后,自动开盖,2秒后关盖。使用外部中断0配合震动控制。舵机和超声波代码整合。查询的方式添加按键控制。查询的方式添加震动控制。

2024-03-30 11:29:22 611

原创 脉冲宽度调制PWM舵机SG90、超声波测距

PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及赋值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%。2.5ms-----------180度;0.5ms-------------0度;1.0ms------------45度;1.5ms------------90度;

2024-03-29 16:06:13 726

原创 定时器与晶振时钟、中断系统、定时中断

微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。TCON寄存器的bit5(TF0)能表示爆表:当爆表的时候,硬件会修改bit5(TF0)位上面的数据,改成 1(置1),进入中断,硬件置TF0为0,如果不用中断,我们用软件代码吧TF0清零。当CPU正在处理一个中断源请求的时候,(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。

2024-03-29 09:40:17 1370

原创 51单片机电动车报警器

当设置继电器为低电平触发时,STC89C52RC的IO输出低电平,就会导致COM口和NO口闭合,也就是完成报警器的串联电路,开始响。遥控发送接收433M。

2024-03-28 14:55:24 369

原创 keil环境搭建和单片机的认识、点亮第一个LED

单片机(Single-Chip Microcomputer)是一种集成电路芯片, 把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、 多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多 路转换器、A/D转换器等电路) 集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。当按键按下的那一时刻和松开的时候有类似于锯齿的形状那就是按键抖动,这个抖动不是我们人为能控制得了的,所以我们只能对进行硬件消抖或者进行软件消抖.

2024-03-28 10:40:52 755

原创 字符串,sizeof,strlen,malloc,string.库(strcpy、strcat、strcmp)

realloc函数返回的是void*类型的指针,指向在堆区重新开辟的内存块的起始地址,memblock是先前开辟的内存块的指针(也就是malloc或calloc之前申请的那块内存空间,即需要调整大小的内存空间),size_t size指的是New size in bytes,新的字节数,注意不是增加的字节数,而是新开辟的那块内存空间的字节数,返回值为调整之后的内存的起始地址。malloc只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。返回类型是一个指向存储区s的指针。

2024-03-26 10:47:19 1088

原创 函数指针,回调函数,指针数组,指针函数,二级指针,避坑,完结

这个函数前面有一个*,表示此函数是指针型函数(函数值是指针),最前面的int表示返回的指针指向整型变量。”,a是函数名,调用它以后能得到一个int*型(指向整型数据)的指针,即整型数据的地址。一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。定义:如果程序中定义了一个函数,在编译时,编译系统为函数代码分配了一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。气概念与以前类似,只是返回的值的类型是指针类型而已。

2024-03-25 14:53:46 884

原创 二维数组,地址,指针

即,*array_2 与 array_2[0] 是等价的( * 表示解引用,所以此处 *array_2 表示的是第一维数组的首元素的内容,这个内容是指向第二维数组的首元素;array_2[0] 为第二维数组的数组名,所以 array_2[0] 也是指向第二维数组的首元素)( *array_ 2 + 1 等价于 array_2[0] + 1,可自行验证)。所以&array的类型是指向整个数组的指针,而array是指向array[0]的指针,虽然在数值上相同,但是在类型上不同。

2024-03-23 17:08:29 963

原创 指针变量类型、使用场景;练习

系统在使用数组下标对数组成员变量进行访问时,开销比较大,指针的访问效率远远大于数组名的访问效率的。下标法更加容易理解,在可读性方面,也更加的具有优势,具体怎么选择,也没有一定的说法。数组名代表数组首元素的地址,是个地址常量,不能改变。而定义的指针是变量,可以改变。定义一个指针变量指向数组,指针变量保存的时数组首个元素的地址。但是只有在指针正确访问时,才能比下标法更有效率、指针变量就是存放地址的变量。指针当做数组名,下标法访问。

2024-03-22 11:26:34 848

原创 二维数组和函数;外部变量和局部变量

二维数组是由若干个一维数组组成的,在内存中,数组是按行存放的,因此,在定义二维数组是,必须指定列数(即一行包含几个元素),由于形参数组与实参数组类型相同,所以它们是由具有相同长度的一维数组所组成的。不能只指定1维(行数)而省略第2维(列数)。函数无法返回多个变量,被迫使用全局变量。输入10个数,找出最大数以及最大数的下标。外部变量、全局变量和局部变量。

2024-03-21 15:44:50 621

原创 函数嵌套和递归;数组形参和实参

函数嵌套和递归,数组形参和实参

2024-03-20 20:39:13 454

原创 冒泡、选择排序;二维数组;函数三要素,形参实参

如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第1维的长度可以不指定,但第2维的长度不能省略。通过简单较少的数据推导得出结论,i个元素需要比较i-1轮,第j轮需要比较i-1-j次。第一轮从前往后两两比较,4个元素比较3次,得出最大值为13。可以对二维数组中的某几个元素赋值,其他的元素默认为0。第二轮,3个元素比较2次,最大值为12。第三轮,2个元素比较1次,最大值为9。函数要先定义再使用,和变量一个道理。

2024-03-20 16:56:19 956

原创 数组用法,长度计算,应用练习(斐波那契数列)

sizeof 是一个关键字,能计算括号中对应的数据的内存空间大小。把整个数组的大小,除以其中一个元素的大小,就是这个数组的元素个数。数组中的数据类型相同,且地址空间连续。数组中的元素的下标从0开始。

2024-03-20 09:06:14 304

原创 循环for,最大公约数、最小公倍数、水仙花数

最大公约数和最小公倍数。

2024-03-19 19:33:03 224

原创 判断if、switch,循环while

与:&& 或:|| 非:!成绩分类,switch case完成。switch case的使用。if else的使用。while循环的使用。

2024-03-19 19:31:41 773

空空如也

空空如也

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

TA关注的人

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