自定义博客皮肤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)
  • 收藏
  • 关注

原创 I2C总线式驱动开发

Linux I2C驱动

2022-12-12 17:51:23 1755 2

原创 嵌入式驱动初级-中断

驱动中断

2022-11-26 11:37:58 977

原创 嵌入式驱动初级-阻塞与非阻塞

阻塞与非阻塞

2022-11-25 22:19:54 1063 2

原创 嵌入式驱动初级-字符设备驱动基础

字符设备驱动

2022-11-25 19:04:44 1088

原创 深度学习去雾

文章目录前言一、MSCN-Net多尺度卷积神经网络去雾(非端到端)1.网络结构图2.估计传输图代码3.利用传输图和假设环境光去雾公式和代码二、端到端去雾AOD-Net1.公式推理和网络结构图2.代码三、DCP-Net密集连接金字塔去雾网络(端到端)1.网络结构图2.估计环境光子网络代码3.估计传输图子网络代码4.联合去雾网络代码四、FFA-Net特征注意融合网络去雾(端到端)1.总体网络结构图2.注意力机制结构图和代码3.基础块结构图和代码4.总体网络结构图和代码五、门控上下文聚合网络GCA-Net去雾去雨

2022-03-07 21:22:40 3489 2

原创 使用pinctrl 和 gpio 子系统的字符设备驱动

pinctrl 和 gpio 子系统的字符设备驱动一、 修改设备树文件二、 LED 灯驱动程序编写三、makefile四、应用层代码运行测试一、 修改设备树文件打开 imx6ull-alientekemmc.dts,在根节点“/”下创建 LED 灯节点,节点名为“gpioled”。/*yqh2021/5/12*/ gpioled{ compatible = "alientek,gpioled"; pinctrl-name = "default"; pinctrl-0 = <&a

2021-05-12 20:39:02 335 3

原创 linux-多任务同步和互斥

文章目录同步互斥概述互斥锁互斥锁的概念互斥锁的操作初始化互斥锁互斥锁上锁互斥锁解锁销毁互斥锁互斥锁案例信号量信号量的概念信号量用于互斥信号量用于同步信号量的操作信号量的初始化信号量P操作信号量V操作获得信号量的计数值信号量的销毁信号量的使用同步互斥概述在多任务操作系统中,同时运行的多个任务可能都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务同步和互斥就是用于解决这两个问题的。互斥:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。PO

2021-05-05 22:03:24 455 1

原创 linux-线程

文章目录线程概述线程的概念线程和进程的比较多线程的用处线程的基本操作线程的创建线程等待线程分离线程分离函数:pthread_detach线程退出线程退出函数线程的取消pthread_cancel()线程的取消状态pthread_setcancelstate()线程的取消点pthread_testcancel()线程的取消类型pthread_setcanceltype()线程退出清理pthread_cleanup_push()pthread_cleanup_pop()线程概述线程的概念每个进程都拥有自

2021-05-05 18:38:44 158 1

原创 linux进程间通讯-共享内存

文章目录共享内存概述共享内存的特点共享内存操作在ubuntu 12.04中共享内存限制值如下在ubuntu 12.04中共享内存限制值如下创建共享内存共享内存映射(attach)解除共享内存映射(detach)共享内存控制共享内存概述共享内存允许两个或者多个进程共享给定的存储区域。共享内存的特点1、共享内存是进程间共享数据的一种最快的方法。一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。 2、使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥。

2021-04-28 19:22:15 273

原创 linux进程间通讯-消息队列

文章目录IPC对象查看已经创建的IPC对象:消息队列概述消息队列的概念消息队列的特点在ubuntu 12.04中消息队列限制值如下ftok函数创建消息队列 -- msgget( )发送消息 -- msgsnd( )接收消息 -- msgrcv( )消息队列的控制IPC对象除了最原始的进程间通信方式信号、无名管道和有名管道外,还有三种进程间通信方式,这 三种方式称之为IPC对象。IPC对象分类:消息队列、共享内存、信号灯集。IPC对象也是在内核空间开辟区域,每一种IPC对象创建好之后都会将其设置为全

2021-04-28 13:09:55 386

原创 linux进程间通讯-信号

文章目录进程间通信功能信号信号的概念产生信号的方式信号的默认(缺省)处理方式进程接收到信号后的处理方式kill函数进程间通信功能数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程 希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。Linux操作系统支持的主要进程间通信的通信机制进程间通信的

2021-04-28 10:26:00 321

原创 linux进程间通讯-有名管道

文章目录阻塞和非阻塞概念通过fcntl函数设置文件的阻塞特性文件描述符概述文件描述符的复制阻塞和非阻塞概念如果是阻塞,管道中没有数据,read会一直等待,直到有数据才会继续运行,否则一 直等待。如果是非阻塞,read函数运行时,会先看一下管道中是否有数据,如果有数据,则正常运行读取数据,如果管道中没有数据,则read函数会立即返回,继续下面的代码运行。通过fcntl函数设置文件的阻塞特性功能函数设置为阻塞:fcntl(fd, F_SETFL, 0);设置为非阻塞:f

2021-04-26 20:48:27 437

原创 linux进程间通讯-无名管道

文章目录无名管道无名管道的创建 -- pipe函数无名管道的读写规律无名管道无名管道概述管道(pipe)又称无名管道。无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符。任何一个进程在创建的时候,系统都会 给他分配4G的虚拟内存,分为3G的用户空间和1G 的内核空间,内核空间是所有进程公有的,无名管道就是创建在内核空间的,多个进程知道 同一个无名管道的空间,就可以利用他来进行通信。无名管道虽然是在内核空间创建的,但是会给当前用户进程两个文件描述符,一个负责执行 读操作,一个负责执行

2021-04-24 21:09:21 233

转载 linux-进程的替换exec函数族

文章目录一、进程的替换二、exec函数族execl函数execlp函数execvp函数一、进程的替换exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。exec函数族,是由六个exec函数组成的。1、exec函数族提供了六种在进程中启动另一个程序的方法。2、exec函数族可以根据指定的文件名或目录名找到可执行文件。3、

2021-04-24 15:27:05 326

原创 linux-进程

文章目录一、进程概述二、进程控制进程的创建--fork函数获得进程号的函数进程的挂起一、进程概述进程的定义程序和进程的区别: 程序:是静态的,存放在磁盘上的可执行文件。进程:是动态的,是运行在内存中的程序的执行实例。程序是一些指令的有序集合,而进程是程序执行的过程,进程是程序的一次执行过程。 进程的状态是变化的,其包括进程的创建、调度和消亡。 只要程序运行,此时就是进程,程序每运行一次,就会创建一个进程。在linux系统中,进程是管理事务的基本单元。 进程拥有自己独立的处理环境和系统资源(处理

2021-04-24 11:18:22 344

原创 Linux系统编程

文章目录一、系统编程概述二、系统调用I/O函数一、系统编程概述在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问。系统编程主要就是为了让用户能够更好和更方便的操作硬件设备,并且对硬件设备也起到保护作用。我们所写的程序,本质就是对硬件设备的操作,所以操作系统提供接口可以对硬件进行操作,这就是系统编程。系统调用本质都是要对硬件设备进行操作,但是linux操作系统在硬件之上设置了内核,也就是只有内核才可以直接操作硬件设备。如果想操作内核,需要调用内核的系统调用。内核中的

2021-04-23 17:31:51 258

原创 STM32-I2C总线驱动程序分析

文章目录I2C硬件电路原理图I2C 简介添加相应的文件并添加进工程文件I2C驱动程序结构I2C驱动程序分析LM75A温度传感器电路原理图LM75A温度传感器驱动程序分析杨桃32学习笔记,本文图片文字皆为转述I2C硬件电路原理图I2C要点I2C总线是板级总线,连接线一般不超2米。电路连接:两线总线连接,1~10K上拉电阻,复用开漏模式。器件地址:每个器件都有唯一地址(7位16进制数),最多127个器件地址,新版I2C规范中最大器件地址数量可达1023个。所有设备与单片机需要共地。杨桃电

2021-04-22 16:58:07 2110 8

原创 STM32-RCC内部总线时钟设置程序详讲

文章目录RCC介绍回顾时钟复位和电源管理文章时钟树详解rcc程序详解以及涉及到的固件库函数杨桃32学习笔记,本文图片文字皆为转述RCC介绍RCC时钟复位和设置功能的缩写,它可以设置单片机的时钟输入源,以及cpu和内部总线的时钟频率。在我们之前学过的程序内开头都有rcc的设置程序,接下来就讲解rcc设置函数的内容从而结束stm32核心板的内容。回顾时钟复位和电源管理文章内部时钟都是RC,外部时钟都是晶体,高速都是提供系统时钟。8MHZ的高速内部时钟的通过多路选择器和倍频器达到不同频

2021-04-21 18:33:48 1668 3

原创 STM32-超级终端显示日历

文章目录示例程序烧录验证基于上一节程序修改修改main.c修改main.c中分和秒的显示细节杨桃32学习笔记,本文图片文字皆为转述示例程序烧录验证使用之前文章讲过的烧录软件烧录结束后,打开超级终端,按下回车弹出指令界面如下。按照提示输入相应格式的时间数据就可以把现在的时间写入,而不是rtc初始化的1970年,同时打印出换算出来的星期。基于上一节程序修改开启串口中断处理函数,中断服务函数不做修改和超级终端控制led中程序一致。修改main.c#include "st

2021-04-21 16:03:41 522 1

原创 STM32-RTC原理和驱动程序

文章目录RTC电路原理图RTC实现原理烧录示例文件的hex查看程序效果添加相应的文件并添加进工程文件杨桃32学习笔记,本文图片文字皆为转述RTC电路原理图RTC实现原理STM32的RTC只用一个32位计数器来计时,而不是用年月日时分秒的分组寄存器。通过设置可以让这个计数器1秒加1,从0-0XFFFFFFFF大约可计时136年。时间起点一般设置为1970-01-01 00:00:00 (因现有函数如此定义)如果要读当前的年月日时分秒,先读出32位RTC计数器值,然后以1970-01-0

2021-04-21 11:49:18 1798

原创 stm32固件库中文用户使用手册

固件库中文用户使用手册链接:[https://pan.baidu.com/s/1GP3K99Cfbuyt2Kh2TohmRA]提取码:5lky复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V5的分享

2021-04-20 17:21:52 1499 1

原创 STM32-超级终端串口控制程序

文章目录示例程序烧录验证基于上一节程序修改烧录验证杨桃32学习笔记,本文图片文字皆为转述示例程序烧录验证使用之前文章讲过的烧录软件烧录结束后,打开超级终端,按下回车弹出指令界面如下,按照提示可以输入命令进行控制led状态。基于上一节程序修改全局变量函数体内部的变量的作用域仅在该函数内,如果想要在别的文件和函数内调用该变量就需要定义全局变量。具体方法如下我们在超级终端输入的命令保存在,接收缓冲数组中,当我们按下回车的时候,程序就会在数组中查找我们输入的内容使能串口1中断

2021-04-20 17:06:12 2300 2

原创 JAVA基础16-Java匿名内部类

文章目录匿名内部类的特点匿名内部类的特点匿名内部类是没有名称的内部类,没办法引用他们。必须在创建时,作为new语句的一部分来声明并创建他们的实例。匿名内部类必须继承一个类(抽象的,非抽象的都有可以)或者实现一个接口,所有父类(或者父接口)是抽象类,则匿名内部类必须实现其所有抽象方法。匿名内部类必须继承一个类(抽象的,非抽象的都有可以)或者实现一个接口,所有父类(或者父接口)是抽象类,则匿名内部类必须实现其所有抽象方法。语法:实例new interface/superclass(){类体

2021-04-20 11:46:41 192

原创 JAVA基础15-Java内部类

文章目录内部类及其主要特点内部类及其主要特点所谓内部类(inner class),顾名思义,就是将一个类定义在另一个类的内部。这个被定义在内部的类称之为内部类。例如:Public class outer{Class lnner{}}内部类的主要特点:1.内部类可以很好的实现隐藏,可以使用protected private修饰符2.内部类可以直接访问外部类的所有成员,包括私有的成员3.外部类不能直接访问内部类的成员,必须首先建立内部类的对象才能访问成员内部类及应用:2.成员内部类

2021-04-20 11:43:00 110

原创 JAVA基础14-Java接口及其使用

文章目录接口语法和特点接口语法和特点接口语法:Interface 接口名{//共有静态常量、抽象方法}接口的特点:接口中只能存放静态常量和抽象方法,java接口是对功能的拓展。通过实现接口,java类可以实现多实现。一个类可以同时继承(extends)一个父类并且实现(implements)多个接口。接口与接口之间可以使用extends实现继承。抽象类和具体实现之间是一个继承关系,也就是如果采用抽象类的方式,则和父类子类在概念是是相同的。接口和实现类在概念上不要求相同,接口只是

2021-04-20 11:34:39 101

原创 JAVA基础13-Java抽象方法、抽象类、抽象之模板方法模式

文章目录Java抽象方法和抽象类抽象之模板方法模式Java抽象方法和抽象类抽象类:Java中可以定义没有方法体的方法,该方法由子类来具体实现。这个没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。抽象方法的特点:1.只有方法头没有方法体的方法称为抽象方法2.抽象方法用abstract来修饰,而且含有抽象方法的抽象类也要abstra修饰3.抽象方法代表一种不确定的操作或行为4.抽象方法不能被调用抽象类的特点:定义中含有抽象方法的类叫做抽象类,抽象类用abstract

2021-04-20 10:46:11 225

原创 JAVA基础12-继承(3)

文章目录Java继承小练习Java继承之简单工厂模式Java继承小练习多态的引入,方法的重写是多态机制的前奏 可以直接new继承父类wapon类的子类 M4A1,K98类Java继承之简单工厂模式

2021-04-20 10:37:02 94

原创 JAVA基础11-继承(2)

文章目录Java继承之方法重写Java继承之objectJava继承之方法重写什么是方法重写:方法重写是指子类可以根据需要对从父类继承来的方法进行改写,是多态机制的前奏。方法重写注意点:1.重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值。而重载也就是函数名相同 参数列表不同。2.重写方法不能比被重写方法有更严格的访问权限。比如父类public 子类private3.父类中的私有方法,不能被重写。4.在子类重写的方法中继续调用父类被重写的方法可以通过spuer函数名获取。

2021-04-20 10:20:18 117

原创 JAVA基础10-继承(1)

文章目录Java继承的概念和用法Java继承之super关键字Java继承之私有权限Java继承的概念和用法继承背后的思想就是基于已存在的类来构建新类。当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来制定新类以应对需求。约定:从其他类导出的类叫做子类,被导出的类叫做父类。在java中,除了object类之外,所有类都是子类,只有唯一的父类继承在面向对象中不可忽缺,创建一个类时,总是在继承。继承的意义:代码重用 体现不同抽象层次父子类关系:父类更抽象,更一般 子类更

2021-04-19 21:38:00 115

原创 JAVA基础9-封装(3)

文章目录封装包创建包的工程封装包打包的意义标准java库是由一系列包组成,包括java.lang java.util java.net等等。标准java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包。Java的包是为了更好的规划代码,防止命名冲突和混乱。所以java出现了打包机制当把类组织起来放进一个包内之时,也就给包中的成员赋予了相互访问的权限,您就拥有了该包内的程序代码。人话:(导入包)包访问权限把类剧集在一个包中这一做法提供了意义和理由。Pack

2021-04-19 21:04:01 130 1

原创 JAVA基础8-封装(2)

文章目录封装this关键字的特点封装static关键字的特点方法重载封装this关键字的特点用法:1.在类的方法中,使用this关键字代表的是调用此方法的对象的引用。人话:this调用本类中的属性,也就是类中的成员变量;2.this可以看作是一个变量,他的值是当前对象的引用3.使用this可以处理方法中的成员变量和形参同名的问题(经常用到)4.在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法(经常用到)封装static关键字的特点static

2021-04-19 20:40:37 77

原创 JAVA基础7-封装(1)

文章目录封装的概念和实现Java封装之访问修饰符Java封装之取值赋值方法Java封装之构造方法封装的概念和实现1.将东西包在一起,然后以新的完整形式呈现出来,将方法和字段(属性)一起包装到一个单元中,单元以类的形式实现。信息隐藏,隐藏对象的细节,不让外部直接访问到。2.将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符),共同被称作封装,其结果是一个同时带有特征和行为的数据类型。定义类 ,定义其属性,方法的过程称为封装类。和数组相似,对象也是引用数据类型,只能使用new运算符从堆中分配内存

2021-04-19 20:14:33 137

原创 JAVA基础6-函数

文章目录函数找最大值最小值实现计算器Java输入函数找最大值最小值实现计算器Java输入

2021-04-19 19:27:35 75

原创 JAVA基础5-数组

文章目录数组数组动态赋值获取数组元素个数数组命名规范数组数组动态赋值获取数组元素个数数组命名规范

2021-04-19 19:23:00 65

原创 JAVA基础4-循环语句

文章目录for循环while循环for循环while循环

2021-04-19 19:16:23 78

原创 JAVA基础3-选择语句

文章目录条件语句多分支语句if-else嵌套条件语句多分支语句if-else嵌套

2021-04-19 19:13:12 84

原创 JAVA基础2-输出语句

文章目录创建java工程输出语句创建java工程输出语句// An highlighted blockvar foo = 'bar';

2021-04-19 19:05:31 74

原创 java基础1

文章目录新建java工程java第一个程序:hello world新建java工程java第一个程序:hello world

2021-04-19 17:15:19 77

原创 STM32-USART控制led和蜂鸣器

文章目录示例程序烧录验证基于上一节程序修改超级终端串口软件的使用杨桃32学习笔记,本文图片文字皆为转述示例程序烧录验证在电脑端打开串口调试助手并向单片机输入1发送数据,接收区显示1:LED1 ON并且,单片机上的led1灯亮起。向单片机输入0发送数据,接收区显示 0:LED1 OFF并且,单片机上的led1灯熄灭。向单片机输入2发送数据,接收区显示 2:BUZZER 并且,单片机上的蜂鸣器响一下。此外,在单片机上按下按键KEY1和KEY2,接收区显示KEY1 KEY2。根据该程序我们可以通

2021-04-15 18:56:31 3394 1

原创 STM32-USART接收程序

文章目录对串口发送程序进行修改位接收编译烧录后结果为查询方式接收程序解读中断方式接收程序解读杨桃32学习笔记,本文图片文字皆为转述对串口发送程序进行修改位接收编译烧录后结果为查询方式接收程序解读//查询方式接收if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET){ //查询串口待处理标志位 a =USART_ReceiveData(USART1);//读取接收到的数据 printf("%c",a); //把收到的数据发送回

2021-04-15 16:34:09 868

空空如也

空空如也

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

TA关注的人

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