自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (1)
  • 收藏
  • 关注

原创 STM32F1 GPIO工作原理初探

GPIO工作方式:1、四种输入模式输入浮空输入上拉输入下拉模拟输入2、四种输出模式开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)开漏复用功能推挽式输出:可以输出强高低电平,连接数字器件推挽式复用功能三种最大翻转速度2MHZ10MHZ50MHZ...

2020-11-30 18:48:20 212

原创 IIC总线通讯协议、EEPROM芯片

**EEPROM芯片:**掉电不会丢失数据,可以保存数据。IIC串行总线的组成及工作原理:

2020-11-23 23:28:43 617

原创 51单片机—串口通信

计算机串行通信:并行通信:串行通信:异步通信:同步通信:串行通信的传输方向:串行通信常见的错误校验:传输速率比特率(波特率):(fosc是晶振频率,要将Mhz转化为hz(乘10的6次方),若不设置SMOD则默认是0,有想设置的波特率就可以求出T初了,将它赋给TH和TL就行了)串行通信接口标准:传输距离与传输速率的关系:采用RS-232C接口存在的问题:串行接口的结构:使用串口前的准备工作:与串行通信相关的寄存器:可位寻址的意思是可以写为像以下这样的形式:

2020-11-22 14:19:55 1190 2

原创 定时/计数器(定时和计数的功能)、定时器中断

定时/计数器实现功能:(1)定时功能:定时/计数器说明(最高单次计时时间是71毫秒=65535*1.085us,1.085us是机器周期):使用51定时/计数器步骤:定时/计算器控制寄存器:设置定时寄存器的工作模式:将想计时的时间(这个时间意思是想让定时/计数器经过多长时间溢出,溢出后就说明达到了你设定的时间)转化为微秒级(50毫秒=50000微妙)再用转化后的数除以1.085(机器周期时间)得到的数就是要加的次数 ,定时/计数器总共加65535次就会溢出,提前有一个初始值就可减少达到溢

2020-11-21 18:31:32 6809

原创 中断系统详解、外部中断

51单片机各个引脚功能IO口引脚:中断系统的主要功能:处理随机突发事件中断系统结构:什么是中断系统:数据的输入/输出传送方式:中断传送方式特点:51系统允许的5个中断源:51单片机中断系统内部结构图:允许中断:配置中断方式:编写中断处理函数:5个中断源的中断入口及中断级别:中断使用步骤:代码实现由外部中断控制P1口的电平高低:#include<reg52.h>#include<intrins.h>#define uint

2020-11-21 11:36:53 1055

原创 51单片机8*8点阵屏、取模软件的使用

取模软件网盘提取链接:https://pan.baidu.com/s/1YYQo_tZNCXlo9uWVbtsNdg提取码:jfbr74HC595芯片原理图:两片595芯片级联驱动点阵屏只需要三个IO口,串行入(一次只能传一个数据,S_CLK)并行出(一次可以传多个,R_CLK)点阵屏内部的接线图:显示一个点的程序#include<reg52.h>sbit DIO =P3^4;//串行数据口sbit S_CLK =P3^5;//移位寄存器时钟sbit R_CLK =P3^

2020-11-21 00:38:32 7356

原创 51单片机独立键盘和矩阵键盘

独立键盘代码:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;sbit DUAN =P2^6;//数码管段选sbit WEI=P2^7; //数码管位选sbit key_s2 =P3^0;//独立按键s2sbit key_s3 =P3^1;//独立按键s3uchar temp;uchar num;..

2020-11-18 01:16:11 848

原创 C51蜂鸣器和数码管动静态显示

蜂鸣器代码#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;uchar temp;void delay(void) //误差 -0.000000000023us{ unsigned char a,b; for(b=221;b>0;b--) for(a=207;a>

2020-11-17 22:47:18 885

原创 LED闪烁和流水灯,调试教程,在线仿真器的使用

常用的延时方法:软件延时(使用简单但是浪费CPU资源)、定时器延时(不浪费CPU资源),本次先使用软件延时。LED全亮代码:#include<reg52.h> //引用51的头文件void main(){ P1=0;}整体代码闪烁#include<reg52.h>unsigned int i; void main() { while(1) { P1=0; i=65535; while(i--); P1=0xff;//单片机会将你

2020-11-17 19:21:01 3871 6

原创 51单片机点亮第一个LED教程

单片机芯片型号: STC89C52建立工程文件打开keil4软件界面如下:新建工程文件(自己选择文件路径,并给工程命名):若出现下图点击OK:然后选择Atmel点击OK(根据自己的芯片型号选择):然后会出现下图(提示是否复制8051的启动文件到工程中)点击否(若需要点击是):出现下图表示已经建好了:新建.c文件点击下图的小图标新建源代码(也可以在file中新建):点击保存在建好的工程文件中(源代码文件以.c结尾):添加.c文件到工程中双击下图中的位置将源代码文件添加到工程文

2020-11-16 21:42:03 743

原创 设计模式之工厂模式

什么是工厂模式工厂模式是最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式的实现cat.c(文件名)#include "animal.h"void catEat(){ printf("ear fish\n");}void catBeat(){ printf("抓\n");}struct Animal cat={ .name="Tom

2020-11-11 17:11:20 94

原创 软件设计模式

软件设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。总的来说:就是代码设计经验的总结,能够让代码稳定,拓展性更强,一系列编程的思想。设计模式有23种,代码容易被他人理解,保证代码可靠性,程序的重用性,要慢慢的积累。算法:算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。百科讲解:h

2020-11-11 13:20:09 140

原创 IO口操控代码

我们在编写驱动程序的时候,IO空间的起始地址是0x3f000000,加上GPIO的偏移量0x2000000,所以GPIO的物理地址应该是从0x3f200000开始的,然后在这个基础上进行Linux系统的MMU内存虚拟化管理,映射到虚拟地址上。#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include &l

2020-11-11 00:56:55 504

原创 树莓派 博通BCM2835芯片手册

手册提取链接链接:https://pan.baidu.com/s/1fdmIBNn1Pr1j3-ercNhKJg提取码:8y1b驱动的两大利器:1、电路图:通过电路图找到寄存器2、芯片手册树莓派有54个通用IO口(0到53),所有GPIO口至少有两个可选功能(输入输出),GPIO有41个寄存器用来管理GPIO。树莓派中的地址(Address)是总线地址,Field Name是寄存器的名字,Description是寄存器的功能描述,GPIO Function Select是功能选择器,每个寄存

2020-11-10 23:00:21 1815

原创 微机总线地址,物理地址 ,虚拟地址

总线地址地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。自己理解:cpu能够访问内存的范围现象:装了32位的win7系统,明明内存条8G,可系统只是别了3.8G ,装了64位才能识别到8G。装了32位的操作系统CPU的访问范围是2^32 bit,就是4194304kbit,就是4096Mbit,等于4G,也就是说只有4G用来访问内存,另外的用于其他的用途。树莓

2020-11-09 15:32:56 312

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

操作驱动的上层代码#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>void main(){ int fd,data; fd = open("/dev/pin",O_RDWR); printf("please input 0/1\n"); scanf("%d",&data); if(data == 1){ printf

2020-11-09 15:03:37 193

原创 驱动认知

用户态App:cp指令,ftp的项目等等这就是App的开发。App开发需要C的基础和C库,C库讲到文件,进程,进程间通信,线程,网络,界面(GTk)。C库(是linux标准库一定有):就是Clibary,提供了APP支配内核干活的接口,调用的open,read,write,fork,pthread,socket由此处封装实现,由写的应用程序调用,C库中的各种API调用的是内核态,支配内核干活内核态进程,内存,线程,网络,设备驱动不需要上层应用开发者关心,驱动在前面的学习是调用wringpi库实现,

2020-11-09 00:37:46 295

原创 linux内核结构介绍

内核结构框图应用程序(基础C加C库)通过函数库(C库),C库提供了应用程序支配内核干活的接口,虚拟文件系统和系统调用接口其实是重合的。下面我们以如何打开一个文件来说明具体的步骤——应用程序调用open,read,write这些函数(来自于C库),C库和系统调用接口打交道,系统调用接口可以操作底层的各种东西,可以做进程线程相关的东西,也可以访问各种不同的文件系统,我们在应用程序中调用open ,read ,write函数,在系统调用接口就会调用sys_open,sys_read ,sys_write,然后

2020-11-08 09:48:18 179

原创 文件系统认知

什么是文件系统常规认知是:linux根目录那些东西百科:文件系统是操作系统用于明确存储设备组织文件的方法,操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。以上说的方法:就是文件管理系统(程序),简称文件系统。文件系统(文件管理系统的方法)的种类有哪些呢FAT ,NTFS(windows) ,EXT1/2/3(linux常用的),HFS VFAT …等树莓派中查看文件系统的指令是:df -T如图:其中可以看出来type(文件系统的类型)有:Vfat: 存放bo

2020-11-08 01:01:39 205

原创 Ros命令及功能

运行小乌龟代码:roscorerosrun turtlesim turtlesim_noderosrun turtulesim turtle_teleop_key一些命令及作用rqt_graphrosnode listrosnode info /teleop_turtlerostopic listrostopic info /turtle1/cmd_velrostopic echo /turtle1/cmd_velroservice listrosservice info /cle

2020-11-03 23:54:44 337

原创 安装并配置ROS环境

参考该网址内容:http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment

2020-11-02 01:14:47 111

原创 创建ROS程序包

一个catkin程序包由什么组成?一个程序包要想称为catkin程序包必须符合以下要求:该程序包必须包含catkin compliant package.xml文件 这个package.xml文件提供有关程序包的元信息。 程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。每个目录下只能有一个程序包。 这意味着在同一个目录下不能有嵌套的或者多个程序包存在。 最简单的

2020-11-02 01:13:16 272

原创 ROS文件系统介绍

预备工作本教程中我们将会用到ros-tutorials程序包,请先安装:sudo apt-get install ros-<distro>-ros-tutorials快速了解文件系统概念Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。Manifest (package.xml): 清单,是对于’软件包’相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。文件系统

2020-11-02 00:36:58 237

原创 【ROS问题】rqt_plot运行报错

本人Linux版本:Ubuntu 18.04 LTSROS版本:Melodic方案一:你看那个报错,全是Matplotlib的报错,是这个东西版本不够高,重新安装就好啦。python -m pip install -U pippython -m pip install -U matplotlib我通过以下命令解决的:sudo apt install python3-pippython3 -m pip install -U matplotlibpython -m pip install

2020-11-01 16:07:51 669 1

原创 配置树莓派linux的内核和编译并将镜像拷贝至树莓派

驱动代码的编写需要一个提前编译好的内核,编译内核就必须配置,配置的最终目标会生成.config文件,该文件指导makefile去把有用的东西组织成内核。如何生成.config文件:第一种方式:厂家配linux内核源码,比如说买了树莓派,现在要研发树莓派的底层,厂家会提供树莓派linux内核源码,直接cp    厂家.config    .config第二种方式:make menuconfig 一项项配置,通常是基于厂家的config来配置的。第三种方式:

2020-11-01 09:13:59 1508

空空如也

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

TA关注的人

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