Heavy sea
码龄2年
  • 40,495
    被访问
  • 87
    原创
  • 87,955
    排名
  • 5
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2020-06-28
博客简介:

Heavysea的博客

查看详细资料
  • 3
    领奖
    总分 314 当月 17
个人成就
  • 获得25次点赞
  • 内容获得25次评论
  • 获得189次收藏
创作历程
  • 62篇
    2021年
  • 29篇
    2020年
成就勋章
TA的专栏
  • Linux驱动
    2篇
  • linux
    24篇
  • imx6ull
    5篇
  • stm32
    1篇
  • 设计模式
    2篇
  • C51单片机学习
    9篇
  • ubuntu
    5篇
  • mysql
    1篇
  • C语言
    16篇
  • java学习
    12篇
  • 安卓
    4篇
  • 树莓派
    7篇
  • 爬虫学习
    3篇
  • 数据结构
    15篇
  • 网络协议
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

LED驱动代码编写

为了编写LED驱动程序,需要查看开发板的原理图,查看需要配置的引脚。这里LED驱动代码的编写基于100ask-imx6ull mini开发板。一、查看原理图由LED硬件图可以得知配置GPIO5_3 输出低电平,LED点亮,GPIO5_3输出高电平,LED熄灭。具体的寄存器操作应该是怎样的?1.使能寄存器,但有些芯片的GPIO是没有使能开关的,即它总是使能的。2.选择引脚功能,一个引脚可以用于GPIO、串口、USB或其他功能,有对应的寄存器来选择引脚的功能。3.对于已经设置为GPIO功能的引脚,
原创
发布博客 2021.12.15 ·
2440 阅读 ·
0 点赞 ·
1 评论

hello 驱动编写-最简单的驱动程序

编写驱动程序步骤:确定主设备号定义自己的 file_operations 结构体实现对应的 open/read/write函数,填写入结构体把file_operations 结构体告诉内核,注册驱动程序谁来注册驱动程序?需要一个入口函数;安装驱动程序时,就会调用这个入口函数卸载驱动程序,调用出口函数其他,提供设备信息,创建设备节点imx-linux4.9.88\include\linux目录下fs.h中的file_operations 结构体:可以参考imx-linux4.9.88\
原创
发布博客 2021.12.12 ·
965 阅读 ·
0 点赞 ·
0 评论

TTY体系中设备节点的差别

一、设备节点及有关术语的含义设备节点含义/dev/ttyS0、/dev/ttySAC0串口/dev/tty1、/dev/tty2、/dev/tty3、……虚拟终端设备节点/dev/tty0前台终端/dev/tty程序自己的终端,可能是串口、也可能是虚拟终端/dev/console控制台,又内核的cmdline参数确定术语含义TTY来自teletype,最古老的输入输出设备,现在用来表示内核的一套驱动系统Terminal
原创
发布博客 2021.11.05 ·
82 阅读 ·
0 点赞 ·
0 评论

TCP 与 UDP实例

send函数ssize_t send(int sockfd, const void *buf, size_t len, int flags);sockfd 指定发送端套接字描述符;buf 指明一个存放应用程序要发送数据的缓冲区;len 指明实际要发送的数据的字节数;flags 一般置0。客户或者服务器应用程序都用send函数来向TCP连接的另一端发送数据recv函数ssize_t recv(int sockfd, void *buf, size_t len, int flags);s
原创
发布博客 2021.10.18 ·
81 阅读 ·
0 点赞 ·
0 评论

STM32寄存器点灯

配置寄存器使STM32最小系统板上的LED灯点亮根据原理图,要使D2点亮,需要将PC13拉低,分为以下步骤:使能GPIO的时钟配置GPIO13为输出模式配置GPIO13输出低电平一、确定有关寄存器及其地址1.起始地址记录时钟控制寄存器的起始地址为0x4002 1000GPIOC寄存器起始地址为0x4001 10002.使能寄存器根据系统架构图,可知使能GPIO时钟需要去找APB2外设使能寄存器使能寄存器地址+偏移地址 左移4位 *(unsigned int*)0x4002
原创
发布博客 2021.10.13 ·
166 阅读 ·
0 点赞 ·
0 评论

输入系统应用编程--APP访问硬件编程

一、输入系统框架假设用户程序直接访问/dev/input/event0设备节点,或者使用tslib访问设备节点,数据的流程如下:APP发起读操作,若无数据则休眠;用户操作设备,硬件上产生中断;输入系统驱动层对应的驱动程序处理中断:读取到数据,转换为标准的输入事件,向核心层汇报。所谓输入事件就是一个“struct input_event”结构体。核心层可以决定把输入事件转发给上面哪个handler来处理:从handler的名字来看,它就是用来处输入操作的。有多种handler,比如:evd
原创
发布博客 2021.10.07 ·
174 阅读 ·
1 点赞 ·
0 评论

单例设计模式

一、简介单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。具体实现思路别人不能new实例,所以要将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。定义一个静态方法返回这个唯一对象。二、 饿汉式实现立即加载就是使用类的时候已经将对象创建完毕(不管以后会不会使用到该实例化对象,先创建了再说。很着急的样子,故又被称
原创
发布博客 2021.10.01 ·
39 阅读 ·
0 点赞 ·
0 评论

模板方法设计模式

模板方法设计模式定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。设计模式的主要优点它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。它在父类中提取了公共的部分代码,便于代码复用。部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。主要缺点对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,
原创
发布博客 2021.10.01 ·
16 阅读 ·
0 点赞 ·
0 评论

DHT11温湿度LCD显示

一、温湿度模块传感器介绍DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC 测温元件,并与一个高性能8位单片机相连接。供电电压:3.3~5.5V 直流电输出为单总线数字信号温度测量范围0~50度(精度正负2度,分辨率1度)湿度测量范围为20~90%RH(精度为正负5%,分辨率1%)采用单总线双向串行通信协议,每次采集都要由单片机发起开始信号,
原创
发布博客 2021.09.23 ·
1132 阅读 ·
2 点赞 ·
0 评论

ASCII字符和中文字符的显示

ASCII字符和中文字符的显示基于Framebuffer进行编程,Framebuffer应用编程可参考这里一、显示ASCII字符需要在LCD中显示ASCII字符,即英文字母这些字符,需要先找到字符对应的点阵,再根据Framebuffer的应用编程将字符显示到LCD上即可。1. ASCII字符点阵文件Linux内核源码下lib\fonts\font_8x16.c有字符对应的点阵这一文件,该点阵为为8X16的点阵,即每一行有八位即一个字节,一共有16行,每个字符占据16个字节。像素从右边数起,bit0
原创
发布博客 2021.09.18 ·
269 阅读 ·
1 点赞 ·
0 评论

Framebuffer应用编程

一、Framebuffer介绍在Linux系统中通过Framebuffer(帧缓冲)驱动程序来控制LCD。Framebuffer就是一块内存,里面保存着一帧图像。Framebuffer中保存着一帧图像的每一个像素颜色值。LCD控制器周而复始地从Framebuffer中逐一取出每个像素的颜色值发送到LCD,这样LCD便能显示出图像。假设LCD的分辨率是1024x768,每一个像素的颜色用32位来表示,那么Framebuffer的大小就是:1024x768x32/8=3145728字节。二、确定LCD某
原创
发布博客 2021.09.13 ·
96 阅读 ·
0 点赞 ·
0 评论

Makefile的简单使用

Makefile核心规则目标文件(target)… : 依赖文件(prerequiries)…tab键+ 命令(command)如果依赖文件比目标文件更加新,那么执行命令来重新生成目标文件举例:a.c#include <stdio.h>int main(){ func_b(); return 0;}b.c#include <stdio.h>void func_b(){ printf("this is
原创
发布博客 2021.09.10 ·
33 阅读 ·
0 点赞 ·
0 评论

-I (大写i)、-L、-l(小写L) 的使用

一、案例目录下有以下文件:main.c#include <stdio.h>#include "sub.h"int main(int argc, char *argv[]){ int i; printf("Main fun!
"); sub_fun(); return 0;}sub.cvoid sub_fun(void){ printf("Sub fun!
");}sub.hvoid su
原创
发布博客 2021.09.02 ·
134 阅读 ·
0 点赞 ·
0 评论

Navicat 连接linux mysql 失败解决方法

一、问题描述最近在使用Navicat 连接linux mysql总是提示 2003 can’t connect to MySQL server on…,导致总是连接不上。看了网上大部分博文所介绍的解决办法,比如重启mySQL服务、检查mysql是否授权远程用户登录等等…但我这里不能正常解决。二、问题解决(仅对我遇到的情况)1.如果在同一局域网内连接linux mysql,可以先关闭防火墙再连接:systemctl start firewalld // 开启防火墙systemctl stop f
原创
发布博客 2021.08.09 ·
739 阅读 ·
0 点赞 ·
0 评论

LCD 1602学习

一、LCD 1602介绍LCD1602 液晶显示屏是一种字符型显示模块,可以显示ASCII码的标准字符和其他的一些内置特殊符号。显示容量:16 X 2 个字符,每个字符为5*7的点阵引脚功能VCC正极(4.5V~5.5V)VO对比度调节电压RS数据、指令选择,1为数据,0为指令RW读写选择,1为读,0为写E使能,1为数据有效,下降沿执行命令DB0~DB7数据输入、输出BG VCC背光灯电源正极BG GND背光灯电源负极
原创
发布博客 2021.07.16 ·
1357 阅读 ·
2 点赞 ·
2 评论

进程间通信(IPC)介绍

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。...
转载
发布博客 2021.07.13 ·
165 阅读 ·
0 点赞 ·
0 评论

Linux 信号(signal)

对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。一、 信号概述1、信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“SIGCHLD”等等。信号定义在signal.h头文件中,信号名都定义为正整数。具体的信号名称可以使用kill -l来查看信号的名字以及序号,信号是从1开始编号的,不存在0号信号。kill
转载
发布博客 2021.07.11 ·
163 阅读 ·
0 点赞 ·
0 评论

Linux 信号(signal)

对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。一、 信号概述1、信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“SIGCHLD”等等。信号定义在signal.h头文件中,信号名都定义为正整数。具体的信号名称可以使用kill -l来查看信号的名字以及序号,信号是从1开始编号的,不存在0号信号。kill
转载
发布博客 2021.07.11 ·
163 阅读 ·
0 点赞 ·
0 评论

java 泛型

一、泛型类的引入1、问题提出假设现在有这样的一个需求:需要产生多个对象,每个对象的逻辑完全一样,只是对象内的成员变量的类型不同,那我们如何做。方法一:创建多个类文件,给每个类中的成员变量设置指定的数据类型class Cs1 { private int a; public Cs1(int a) { this.a = a; } public int getData() { return a; }}clas
原创
发布博客 2021.07.07 ·
41 阅读 ·
0 点赞 ·
1 评论

java之多态

一、多态介绍1.多态的概念多态性是指同一操作作用于某一类对象,可以有不同的解释,产生不同的执行结果。多态就是同一个接口,使用不同的实例而执行不同操作。2.多态存在的三个必要条件需要存在继承和实现关系同样的方法调用而执行不同操作、运行不同代码(重写)父类引用指向子类对象:Parent p = new Child();3.多态的作用多态通过分离做什么和怎么做,从一个角度将接口和实现进行分离多态消除了类型之间的耦合关系多态的存在提高了程序的拓展性和后期的可维护性举例:Dog 类和Cat类
原创
发布博客 2021.06.24 ·
39 阅读 ·
0 点赞 ·
0 评论
加载更多