自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 6.动态数码管的显示

#include<reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code LedChar[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};unsigned c...

2021-10-25 17:46:45 591

原创 5.3数码管的静态显示

实现数码管显示:0、1、2、3、4、5、6、7、8、9、a、b、cd、e、f,两个字的时间间隔为一秒的代码:#include<reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code ledChar[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF...

2021-10-24 23:33:14 502

原创 5.2定时器的应用:实现LED亮一秒,灭一秒

实现功能的代码:#include<reg52.h>sbit LED = P0^0;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ unsigned char cnt = 0; //打开总开关 ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0...

2021-10-24 22:04:19 6650

原创 4.流水灯代码

方法一:#include<reg52.h>sbit LED = P0^0;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ unsigned int i = 0; ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while(1...

2021-10-24 15:52:16 8088 1

原创 3.LED闪烁代码

#include<reg52.h>sbit LED = P0^0;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ unsigned int i = 0; ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while(1) { ...

2021-10-24 14:38:47 4634

原创 2.点亮LED灯的代码

#include<reg52.h>sbit LED = P0^0;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 1;//1表示高电平,灯灭 while(1);}...

2021-10-24 14:31:25 4171

原创 函数指针的定义

函数指针:一个指针变量,存放的是函数的地址定义形式: 类型 (*指针变量名)(参数列表);如: int (*p)(int x,int y); p是一个指针,它指向一个函数,该函数有2个整形参数,返回类型为int。p首先和*结合,表明p是一个指针。然后再与()结合,表明它指向的是一个函数。指向函数的指针也称为函数指针。#include <stdio.h>#include <stdlib.h>void printfWelc...

2021-09-27 14:52:23 12850 1

原创 链表指定节点前插入新节点

#include <stdio.h>#include <stdlib.h>struct Test{ int data; struct Test *next;};struct Test* insertFromford(struct Test *head ,int data,struct Test *new){ struct Test *p = head; if(p->data == data) { ...

2021-09-27 14:51:24 344

原创 结构体指针

#include <stdio.h>#include <stdlib.h>//1.如果用结构体指针,就不能用点运算符访问结构体中的变量 要用->//2.指针要注意是否是野指针或NULLstruct student//结构体空间是132字节{ int score;//4字节 char name[128];//128字节};int main(){ struct student stu1; stu1.score = 100...

2021-09-27 14:51:12 186

原创 sizeof和strlen的区别

strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)。函数原型:size_t strlen(char const* str);关键字 sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等区别示例代码:#include <stdio.h>#include <stdlib.h>//计算字符串的个数//不能用sizeof来计算字符串...

2021-09-27 14:51:01 88

原创 12.数组指针

数组指针:可以说成数组的指针,首先这个变量是一个指针(一个指针变量),其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址#include <stdio.h>#include <stdlib.h>//"数组指针",一个指针int main(){ int a[3] = {1,2,3}; //int (*p)[3]; char (*p)[3];//数组的指针,强调的是类型,数组的元素个数,

2021-09-27 14:50:51 89

原创 11.指针数组

指针数组:指针的数组,好多指针放在一起,数组的每一个元素都是指针#include <stdio.h>#include <stdlib.h>int main(){ int a = 2; int b = 3; int c = 4;//三个毫无关系的整型变量 int array[3];//多个整数,叫做整数数组 int *p; //定义个指针数组 int *parray[3];//多个指针..

2021-08-28 10:11:37 113

原创 47.驱动代码编译和测试

1.把字符设备驱动框架代码(pin4driver2.c)和驱动的操作上层代码(pin4test.c)拷贝到虚拟机的zhongzf@ubuntu:~/SYSTEM/linux-rpi-4.14.y/drivers/char$ 路径里字符设备驱动框架代码:pin4driver2.c#include <linux/fs.h> //file_operations声明#include <linux/module.h> //modul...

2021-08-28 02:08:59 147

原创 45.基于框架编写驱动代码

驱动的操作上层代码:pin4test.c#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdio.h>int main(){ int fd; fd = open("/dev/pin4",O_RDWR); fd = write(fd,'1',1);}字符设备驱动框架代码:pin4driver2.c#include &lt...

2021-08-28 00:49:50 119

原创 40.虚拟文件系统

1.虚拟文件系统Virtual File System : vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用调用的接口1VFS作为内核子系统,为用户空间程序提供了文件系统相关的接口。所有实际文件系统依赖VFS共存,依靠VFS系统工作。(1)VFS提供通用文件系统接口:用户空间程序可以利用标准的UNIX文件系统调用,如open()\read()\write(),对不同物理介质上的不同文件系统进行操作。(2)VFS提供文件系统抽象层:VFS提供了一个...

2021-08-28 00:02:14 380

原创 41.Linux内核结构

Linux内核结构有三个层次:硬件级、内核级和用户级用户程序通过陷入完成由用户态到内核态的转换。系统调用作为用户级与内核级交互方式,分为2部分:与文件子系统的交互和与进程控制子系统的交互。1.文件子系统管理文件包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。2.进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。3.Linux内核主要包括5个模块:(1)进程调度模块用来负责控制进程对CPU资源的使用。(2)内存管理模块用于确保所有进程能够安全地共享机

2021-08-28 00:01:47 127

原创 34.配置Linux内核适合树莓派的相关操作

1.树莓派Linux源码配置 驱动代码的编写 驱动代码的编译需要一个提前编译好的内核 编译内核就必须配置 配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核 厂家配linux内核源码,比如说买了树莓派,树莓派linux内核源码 第一种方式: ...

2021-08-28 00:01:20 155

原创 32.嵌入式设备带操作系统的启动过程

树莓派等芯片带操作系统的启动过程 1.C51,STM32(裸机)》》》》》》C直接操控底层寄存器实现相关业务。 业务流程型的裸机代码 遥控灯: while(1) 垃圾桶:WemosD1 LOOP 恩智浦智能车: stm32 2. X86,Intel windows ...

2021-08-28 00:00:52 254

原创 31.为linux内核开发做基础准备工作

1.下载linux内核源码网址:

2021-08-27 00:24:31 79

原创 Ubuntu下无法看到共享文件夹的解决办法

在已经创建共享文件的条件下在用户的主目录下使用sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o uid=1000

2021-08-27 00:24:19 253 1

原创 30.给ubuntu安装相应工具

1.安装vim指令:sudo apt-get install vim2.安装gcc指令:sudo apt install build-essential3.安装ifconfig指令:sudo apt install net-tools

2021-08-27 00:24:09 79

原创 26.带wiringPi库的交叉编译如何进行

1.下载wiringPi库的压缩文件(1)解压后放到共享文件夹下(2)进入到lessonPi文件夹,然后把文件拷贝到当前文件夹a. cp /mnt/hgfs/sharefromwindows/WiringPi/ . -rf( -rf 拷贝文件夹)2.带wiringPi库的交叉编译如何进行 (1)正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的时候,链接库的格式也是正确...

2021-08-27 00:23:54 310

原创 25.交叉编译阶段二

交叉编译: 检查下交叉编译工具对不对: arm-linux-gnueabihf-gcc -v 自己版本号:4.8.3 arm-linux-gnueabihf-gcc xxx.c -o xxx 如何把编译生成的可执行文件下载到开发板(树莓派): scp clientInPi pi@192.168.43.30:/home/pi 指令 文件名 开发板用户...

2021-08-27 00:23:41 103

原创 24.树莓派交叉编译工具链的安装

1.进入树莓派官网网址:https://github.com/raspberrypi/下载资源:(1)点击tools(2)下载压缩的文件2.在虚拟机上新建文件夹mkdir lessonPi3.进入文件夹 lessonPi把共享文件夹下的tools-master.zip拷贝到当前文件夹下拷贝指令:cp /mnt/hgfs/sharefromwindows/tools-master.zip .4. 解压解压指令:unz...

2021-08-27 00:23:28 266

原创 21.树莓派和电脑之间串口通信编程

初次使用树莓派串口编程,需要配置/* 修改 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=ext4 elevator=deadline rootwait/*修改 inittab...

2021-08-27 00:20:59 139

原创 19.树莓派超声波测距编程实现

超声波模块超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。硬件电路板上有4个引脚:VCC(正级)Trig(触发即发波)Echo(回应)GND(接地-负极)主要参数:工作电压与电流:5V、15mA感测距离:2~400cm感测角度:不大于15°被测物体的面积:不要小于50cm²,且尽量平整具备温度补偿电路在超声波模块的触发脚位输入10微秒以上的高电位,即可发射超声波,发射超声波之后,与接收到传回的超声波之前,“响应”脚位呈现高电位。因此,.

2021-08-27 00:20:46 572

原创 17.继电器组硬件控制开发

从#include<wiringPi.h>#include<stdio.h>#include<string.h>#define SWI1 26#define SWI2 27#define SWI3 28#define SWI4 29int main(){ char cmd[12] = {'\0'}; if(wiringPiSetup() == -1) { printf(

2021-08-27 00:20:33 113

原创 15.树莓派控制继电器

demo2.c#include<wiringPi.h>#include<stdio.h>#define SWITCHER 7int main(){ int cmd; if(wiringPiSetup() == -1) { printf("硬件接口初始化失败\n"); return -1; } pinMode(SWITCHER.

2021-08-26 14:22:25 91

原创 14.树莓派外设开发综述

树莓派wiringPi库详解参考博文:https://www.cnblogs.com/lulipro/p/5992172.html1.树莓派的接口:驱动 查看树莓派的IO口指令:gpio readall IO口:Input (输入) output(输出) 对主控芯片来说 Input:人体、烟雾、火焰、震动传感器等 output:继电器、蜂鸣器 等 可调整型IO口 PWM :用在电机调速,灯光调明亮度 语音识别模块,液晶屏...

2021-08-26 13:55:45 147

原创 12.Linux库之动态库的生成和使用

等待

2021-08-26 13:10:57 93

原创 11.Linux库之静态库的生成和使用

1.制作步骤原材料:源代码.c 或者 .cpp将.c文件生成.o,gcc a.c b.c -c将.o 打包 ar rcs 静态库的名字 原材料 ar rcs libtest.a a.o b.o

2021-08-26 12:23:44 95

原创 9.linux库引入之分文件编程

分文件编程: 分模块的编程思想: a.网络 b.超声波 c.电机 分文件编程的好处: (1)功能责任划分 (2)方便调试 (3)主程序简洁1.完整的代码:calculatorT.c#include<stdio.h>int add(int x,int y){...

2021-08-26 11:29:04 88

原创 8.树莓派和windows的FileZilla共享文件

1.在windows下安装FileZilla2.打开FileZilla软件输入需要连接的树莓派信息主机名称写sftp:// + 树莓派ip地址,例如sftp://192.168.43.123,因为使用的是ssh文件传输类型。树莓派用户名pi,密码raspberry,端口不用填写。3.文件传输通过FileZilla连接上树莓派后,就可以像在windows下一样,使用拖拽的方式将文件传输过去。...

2021-08-26 10:35:20 406

原创 7.树莓派图形xrdp界面登录

1.树莓派安装 xrdp ,用串口或 ssh 方式登录树莓派,输入指令sudo apt-get install xrdp2.windows 打开远程桌面连接3.输入树莓派的 IP 地址,连接

2021-08-26 10:17:52 224 1

原创 6.树莓派更新新版vim

​​​​​​默认的源是国外的,apt-get 安装的时候失败,我们更新成国内的源1.编辑sources.list打开终端 输入:sudo nano /etc/apt/sources.list用#注释或直接删除原有的内容,新增两条:国内的源:deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpideb http://mirrors.tuna.t

2021-08-26 09:54:29 83

原创 4.树莓派(Raspberry) WIFI 配置

1.树莓派(Raspberry) WIFI 配置输入命令:sudo nano /etc/wpa_supplicant/wpa_supplicant.confnetwork={ ssid="你的无线网名字" psk="密码" key_mgmt=WPA-PSK}按下Ctrl+O 写出保存 ,按下Enter 确定,最后Ctrl+X 退出2.网络ssh方式登录树莓派​​​​​​​ 打开ssh功能 (...

2021-08-26 09:32:35 696

原创 9.多方消息收发

服务端代码:sv1.c#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>//#include<linux/in.h>#include<arpa/inet.h>#include<netinet/in.h>#include<stdlib.h>#include<string.h&

2021-08-25 21:41:32 114

原创 8.实现双方聊天

服务端代码:sv.c#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>//#include<linux/in.h>#include<arpa/inet.h>#include<netinet/in.h>#include<stdlib.h>#include<string.h&g

2021-08-25 14:34:49 188 2

原创 7.socket客户端实现代码

服务端:server1.c#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>//#include<linux/in.h>#include<arpa/inet.h>#include<netinet/in.h>#include<stdlib.h>#include<string.

2021-08-25 11:36:11 101

原创 6.socket服务端实现代码二

server1.c#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>//#include<linux/in.h>#include<arpa/inet.h>#include<netinet/in.h>#include<stdlib.h>#include<string.h>.

2021-08-25 00:21:32 77

空空如也

空空如也

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

TA关注的人

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