- 博客(35)
- 收藏
- 关注
原创 LDO线性稳压电源PCB布局布线
一、LDO线性稳压电源组成与概念LDO线性稳压器是最基本的稳压电源变换, 它只能作降压(如3.3V 降至1.8V) 之用。一般LDO用于电流小于2A的电源电路, 其优点是, 成本低, 电路简单易用, 电源纹波小, 较稳定,上电快二、LDO的电路的主干道布局要点1、分析电源模块输入/输出主路径, 布局时按一字型或者L型摆放;2、电容按先大后小顺序摆放, 就近输入/输出管脚;3、输入/输出布线路径宽度、 换层过孔数量须满足电源电流大小;4、输入端过孔放置在电容前, 输出端过孔放置在电容后,
2021-05-18 20:53:14
5789
原创 几条常用ARM汇编指令总结
1、LDR(load):读内存 LDR R0,[R1] 假设R1的值是x,读取地址x上的数据(4字节),保存到R0中2、STR(store):写内存 STR R0,[R1] 假设R1的值是x,把到R0的值写到地址X上3、B:跳转4、MOV(move):移动 MOV R0,R1 把R1的值赋给R0 MOV R0,#0x123 即 R0=0x1235、LDR :伪指令...
2021-04-18 21:30:34
590
原创 DCDC电源模块
一、DCDC电源模块组成及要点1、DCDC电源模块可以直接贴装在印刷电路板上的电源供应器,有降压和升压两种,其特点是可为专用集成电路(ASIC),数字信号处理器(DSP)、微处理器、存储器、现场可编程门阵列(FPGA)及其他数字或模拟负载提供供电。2、开关电源主要是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制电路、输出整流滤波电路组成。辅助电路有输入过欠压保护电路、输出过欠压保护电路、输出过流保护电路、输出短路保护电路等。开关电源电路设计要点介绍A、电感的取值:电
2021-03-03 15:13:05
10235
原创 基于C语言简单实现人脸识别
一、http协议详解https://www.cnblogs.com/xietianjiao/p/13255099.html二、https协议详解https://www.cnblogs.com/xietianjiao/p/13255408.html三、libcurl库详解https://www.cnblogs.com/xietianjiao/p/13260021.html四、基于libcurl库访问百度#include <stdio.h>#include <c
2021-02-17 15:31:30
2798
原创 PCB基础知识
一、PCB中的线宽线距根据什么来设置1、叠层:按照叠层计算出来的线宽、线距来设置2、生产工艺能力3、设计瓶颈处4、PCB设计密度二、什么是过孔1、过孔:又称金属化孔,用来连接各层之间的印制导线,在导线的交汇处会有一个公共孔,这个孔就是过孔2、过孔有两个寄生参数,寄生电容和寄生电感,为了减少寄生效应的不良影响:A 、选择合适的过孔尺寸B、信号走线尽量不换层,尽量不要使用不必要的过孔C、电源和接地要就近打孔,过孔和管脚之间的引线越短越好,长的话会导致寄生电感的增加D
2021-02-16 15:53:26
8101
1
原创 树莓派IO口驱动之PIN5
1、PIN5口完整驱动代码#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h> //class devise声明#include <lin.
2021-01-10 19:11:37
701
原创 树莓派驱动开发学习总结之IO口驱动
一、驱动开发必要条件1、芯片手册 通过芯片手册查看寄存器的位置,及有关寄存器的操作。2、电路图 其实与看芯片手册的作用相差不多,主要就是去找寄存器的位置。二、树莓派芯片手册GPIO重点部分解读1、确定树莓派的芯片型号:cat /proc/cpuinfo2、BCM2835 ARM Peripherals手册GPIO部分简读三、相关函数总结四、物理地址与虚拟地址五、寄存器"按位与按位或”操作六、测试代码编写及验证七、用自...
2021-01-09 21:11:32
736
原创 树莓派简单字符驱动框架编译、加载及验证
一、简单字符驱动框架搭建1、简单字符设备驱动框架#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h> //class devise声明
2021-01-03 21:38:28
195
原创 C语言实现简单工厂模式
1、简单工厂模式工厂模式是面向对象语言的20多种的设计模式之一,也是比较常用,虽然C语言是一个面向过程的语言,但通过结构体与指针也能实现一些简单的面向对象。基于此,玩了一下C语言简单工厂模式。工厂模式:https://www.runoob.com/design-pattern/factory-pattern.html2、人话简单工厂模式图解:通俗点来讲就是分文件编程,跟在keil里面编写STM32或51差不多,将文件分为了 .h文件与.c文件,然后在主函数里调用相应的函数。3、构
2021-01-02 22:21:18
1650
1
原创 使用C语言结构体实现面向对象
1、构造属性与方法struct Animal{ char name[128]; int age; char six; //成员属性 void (*peat)(); //成员方法 void (*pbeat)(); int (*num)(); };2、构造类int mian(){ struct Animal dog;//构造类 struct Animal cat; struct Animal person;}3、利
2021-01-02 21:16:00
858
原创 树莓派内核编译学习记录
1.树莓派等芯片带操作系统的启动过程 C51,STM32(裸机)》》》》》》C直接操控底层寄存器实现相关业务。 业务流程型的裸机代码 遥控灯: while(1) 垃圾桶:WemosD1 LOOP 恩智浦智能车: stm32 X86,Intel windows 启动过程:...
2020-12-05 20:28:12
133
原创 树莓派模块化编程之TM1637驱动四位数码管
一、驱动TM1637的时序图二、代码实现#encoding:utf-8import RPi.GPIO as GPIOimport timeGPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)CLK=17 #时钟引脚DIO=18 #数据引脚segdata=[0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f]#1--9segdatadp=[0xbf,0x86,0xdb,0xcf.
2020-12-05 20:14:05
1759
3
原创 树莓派交叉编译记录
一、什么是交叉编译1.交叉编译 是在一个平台上生成另一个平台上的可执行代码。在windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu linux上面运行 编译:是在一个平台上生成在该平台上的可执行代码C51 交叉编译的发生在keil(集成环境上面)。2.为什么要交叉编译? 平台上不允许或不能够安...
2020-11-23 11:02:24
152
原创 树莓派语音开盖垃圾桶
一、修改LD7V语音识别模块代码1、修改一级口令为“小没用”,二级口令为开盖与关盖2、修改打印输出代码二、树莓派端代码编写#include <stdio.h>#include <stdlib.h>#include <string.h>#include <softPwm.h>#include <wiringPi.h>#include <unistd.h>#include <sys/time.h&
2020-11-21 21:27:17
421
原创 树莓派模块化编程之舵机
一、PWM与SG90舵机舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2.0ms-----------135度; 2.5ms-----------180度;2.代码实现#include &l
2020-11-21 09:23:21
1209
1
原创 树莓派模块化编程之PWM控制蜂鸣器
一、什么是PWM1.PWM全称:(Pulse width modulation)脉冲宽度调制2.什么是PWM:就是在固定的周期内,高低电平的长度可调3.PWM方形波图二、PWM相关函数1.树莓派硬件输出PWM函数pinMode(1,PWM_OUTPUT);//树莓派硬件输出PWM波的IO口,只有wiringPi编号下的1脚(BCM标号下的18脚)支持void pwmWrite (int pin, int value);//value:写入到PWM寄存器的值,范围在0~102
2020-11-20 21:46:29
1043
转载 树莓派串口编程
一、树莓派串口配置1.修改 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 rootwait2.sudo reboot 重启(这步之后有些树莓派就可以与电脑通
2020-11-18 09:21:41
720
原创 树莓派模块化编程之超声波测距
一、超声波测距代码#include <stdio.h>#include <wiringPi.h>#include <sys/time.h>#include <stdlib.h>#include <unistd.h>#define Trig 1#define Echo 2void initUltra(void){ pinMode(Trig,OUTPUT); pinMode(Echo,INPUT);}void ult
2020-11-16 21:59:08
562
原创 Linux的静态库与动态库
一、程序函数库1.函数库的分类:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loadedlibraries)2.Linux中命名系统共享库的规则:libname.so.x.y.zlib : 固定代表共享库 name:共享库名称 .so: 固定后缀 .x:主版本号 .y:次版本号 .z:发行版本号二、静态库与动态库的比较1.静态库:静态函数库,是在程序执行前(编译)就加入到目标程序中去.
2020-11-13 15:37:45
141
原创 树莓派刷机及登录
一、树莓派刷机1.刷机软件链接:https://pan.baidu.com/s/1d_qvb_z80q--hR0LD9ZLxA 提取码:745d2.树莓派镜像软件3.刷机步骤准备读卡器及一张大一点的内存卡 将镜像文件安装进去二、串口登录树莓派https://blog.youkuaiyun.com/syjsxxjy/article/details/80774262三、SSH方式登录树莓派1.配置网络2.登录步骤四、树莓派图形界面登录...
2020-11-12 11:02:32
410
原创 Linux网络编程记录
一、网络编程概述二、字节序三、TCD/UDP对比四、socket编程步骤五、相关API简述int socket(int domain,int type,int protocol);domain:指明所使用的协议族,通常为 AF_INET,表示互联网协议族(TCP/IP)协议族AF_INET IPv4 因特网域(常用) AF_INET6 IPv6 因特网域 AF_UNIX Unix域UDP AF_ROUTE 路由套接字 AF_KEY 秘钥套接字type参数指定 so...
2020-11-10 10:35:46
195
原创 基于Linux的文件服务站(类似百度云)
一、项目功能ls:显示服务端文件列表lls:显示客户端文件列表cd:回到服务端上级目录lcd:回到客户端上级目录pwd:在服务端下显示显示服务端的路径,在客户端下显示客户端的路径put:将客户端的文件上载到服务端get:将服务端文件下载到客户端quit:退出二、服务端项目代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/typ
2020-11-09 22:10:26
345
原创 Linux线程编程记录
一、进程与线程的区别1.进程与线程典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。线程是操作系统能够进行运算调度的最.
2020-11-06 22:51:00
119
原创 Linux进程间通信编程记录(二)
一、共享内存原理1原理:就是开辟一个独立的内存空间,来实现通信。通俗点说:就好像两个学生在上课的时候,由于不能说话,就只好拿一个本子来聊天,这个本子就相当于共享的内存。2.原形:int shmget(key_t key,size_t size,int flag);//创建或者获取一个共享内存,成功返回ID,反之-1void *shmat(int shm_id,const void *addr,int flag);//连接共享内存到当前进程的地址空间,成功返回共享内存指针,失败返回-1、
2020-11-04 21:11:15
234
原创 Linux进程间通信编程记录(一)
一、进程间通信概述1.进程间通信:IPC(InterProcess Communication)2.单机通信:一台电脑上的通信3.多机通信:多台电脑上的通信,是基于网络的通信4.单机通信类型: 半双工管道 (FIFO),全双工管道 (命名全双工管道),消息队列,信号量,共享内存5.多机通信类型:嵌套字,STREAMS,Socket二、管道通信原理1.管道:通常指无名管道2.特点:(1).半双工,即数据只能在一个方向上流动,具有固定的读端和写段(2).只能用于进程间的通
2020-11-04 17:36:02
179
原创 Linux进程编程记录
一、进程相关概念1.什么是程序,什么是进程,有什么区别程序是静态的概念,gcc xxx.c -o pro,磁盘中生成的pro文件叫程序进程是程序的一次的活动,只要程序跑,系统中就多了一个进程2.如何查看进程ps 或ps -aux|grep 要查找的进程3.什么是进程标识符每个进程都有一个非负整数表示唯一ID,叫做pid,有点像身份证pid=0:称为交换进程,作用:进程调度pid=1:init进程,作用:系统初始化调用getpid()获取自身进程标识符,getppi..
2020-10-31 21:36:10
124
1
原创 C语言二分法查找法则
1.二分法查询原理例子:在 1 ,-1,55,32,-8中找到32(1).确定中间值与左右边界的值(下标)(2).查找的数与中间比较,如果中间值大于要查找的数则往左边查询,反之右边)(3).判断没有查找到的情况:如果扫描到左边界的元素个数大于右边边界的元素个数,则表示没有找到2.代码实现#include <stdio.h>int dichotomySearch(int arr[],int liftIndex,int rightIndex,int num){
2020-10-31 09:45:21
4383
原创 C语言冒泡排序法则
1.冒泡原理例子:从大到小排序1,-2,4,3,-5主要是运用交换的原理,将大的换到前面,小的换到后面2.代码实现#include <stdio.h>int main(){ //从大到小排序 int arr[]={1,-2,4,3,-5}; int i; int t;//临时变量 for(i=0;i<4;i++){//第一轮交换 if(arr[i] <
2020-10-30 21:25:06
556
原创 Linux与C语言文件编程记录
1.Linux文件编程之open2.Linux文件编程之write3.Linux文件编程之read4.Linux文件编程之lseek5.Linux文件编程之cp源码编程6.Linux文件编程之标准输入、输出、错误7.Linux文件编程之写入数字到文件8.Linux文件编程之写入结构体到文件9.C语言文件编程之fopen10.C语言文件编程之fwrite11.C语言文件编程之fread12.C语言文件编程之fseek13.C语言文件编程之fputc,fgetc,
2020-10-28 21:32:53
239
原创 基于WemosD1的避障小车
1.避障小车展示2.该项目所需器材主控芯片 WemosD1 其他耗材 帅气的遥控车一辆、超声波模块、L9110s驱动模块 手机APP所需软件 TCP连接(手机可以直接应用商店下载)、Eslipse、夜神模拟器 3.ESP82600WiF模块核心代码WemosD1集成了ESP8266WiFi模块,而且运行WemosD1的平台有自带的ESP8266的封装库,所以使用该芯片只要知道如何调用库函数即可char* ssid="Dugad";//wifi热点名.
2020-10-22 11:11:55
1069
1
原创 基于文本界面的家庭收支软件
1.项目展示2.项目代码#include <stdio.h>#include <string.h>//定义一个结构体struct MyFamilyAccount{ int flag;//表示至少有一笔收入或者支出 char details[3000];//明细 double balance;//余额 }; //定义相关的变量 char key=' '; //表示用户输入了那个菜单 int loop=1; //控制是否退出菜单..
2020-10-21 09:10:52
138
原创 基于文本界面的客户信息管理软件
1.项目展示2.项目代码#include <stdio.h>#include <string.h> //定义结构体数据类型 struct Customer{ int id;//编号 int age;//年龄 char name[10]; //名字 char gender; //'f'女 'm'男 char phone[16]; //电话号码 char email[20];//邮箱 }; int loop=1;//控制.
2020-10-21 08:57:14
300
1
原创 基于WemosD1的智能垃圾桶
1.项目成果展示2.项目要求(1).会简单C语言, 了解servo库, 了解SG90舵机 ,知道超声波模块检测距离方法(2).自己做一个垃圾桶或者买一个 小型垃圾桶(3).了解WemesD1芯片3.开发环境arduion-1.6.54.SG90舵机(1).SG90舵机简介型号 SG90 重量13克 角度 90-180通用 三线对应端口 红色 :正极 棕色:GND 橙色:信...
2020-10-20 16:25:39
1020
1
原创 基于ncurse的链表贪吃蛇
1.基础要求会C语言指针, C语言链表 , linux线程编程,了解C语言图形化编程(nucrse),linux简单指令2.为什么要用nucrse及游戏效果界面nucrses,其实已经被市场淘汰了,只是为了方便学习,没啥为什么游戏效果界面:草:为什么会底部会出现这一串数字,好丑3.nucrse输入输出#include <curses.h>//nucrses库调用printw();//输出initscr();//nucrses 函数初始化getch();//
2020-10-19 14:08:38
333
原创 C语言链表学习记录
1.什么是链表链表是一种数据结构,是一种存放数据的思想,也是数据的集合2.链表与数组的区别数组的特点:存放元素地址空间连续,不方便增、删、改、查int array[10];int array2[3]={1,2,3};链表:除了地址空间连续也方便增、删、改、查typedef struct student{ int num; struct student* next;}stus,*pstus;int main(){ stus k1={1,NULL};
2020-10-18 20:39:20
260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人