自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

鼠标作为相对位移输入设备,通常不会直接报告其在屏幕上的绝对位置,而是报告相对于上一个位置的移动量。然而,在软件开发或游戏编程中,我们有时需要知道鼠标的绝对位置。这可以通过一系列的计算和跟踪来实现。

2024-08-26 16:41:21 369

原创 原子操作的概念

原子操作是计算机科学中的一个重要概念,它指的是在执行过程中不可分割的操作,即该操作在执行完毕之前不会被任何其他操作打断。原子操作具有两个主要特性:原子性和可见性。

2024-08-20 15:10:51 227

原创 【linux】SCP或SSH 连接失败: no matching host key type found. Their offer: ssh-rs

scp或者ssh报错“no matching host key type found. Their offer: ssh-rsa,ssh-dss“原因:OpenSSH 7.0以后的版本不再支持ssh-dss (DSA)算法。

2024-08-19 14:13:37 708

原创 Linux网络环境搭建,开发板网线直连电脑网口,电脑WIFI上网

虚拟机在网络设置中有两个有线网络,其中一个还没有设置 IP 的,是我们的网络适配器 1,用来桥接到开发板和 Windows 的。NAT 模式的网络适配器和前面设置的 VMnet8 是在同一网段的(192.168.18.X),如果不是在同一网段,可能是之前用户有设置过 Ubuntu 的 IP,这里我们可以在这个网络的选项中将它设置为自动模式即可。设置双网卡,注意双网卡的网段不能相同,可以手动设置桥接网卡的ip地址和掩码,不用设置路由和DNS,防止双网卡冲突,产生优先级问题,接下来设置下开发板的 IP。

2024-08-19 11:19:24 1303

原创 7-zip常见问题

7-Zip作为一款广受欢迎的免费压缩工具,以其高效、稳定的特点赢得了众多用户的青睐。然而,在使用过程中,用户也可能会遇到一些常见问题。

2024-08-18 22:30:48 1536

原创 U-Boot 命令使用

用法:tftpboot [addr] [filename]md.b:从指定的内存地址读取指定字节数的内容并以字节形式打印。用法:md.b [addr] [count]mw.b:写入指定的字节到指定的内存地址。用法:mw.b [addr] [value] [count]mw:写入指定的数值到指定的内存地址。用法:mw [addr] [value] [count]md:从指定的内存地址读取指定字节数的内容并打印。用法:md [addr] [count]bootz:从指定的内存地址启动压缩的操作系统映像。

2024-08-18 22:21:14 252

原创 uboot启动log简析

1、以后带有调试性质的开发,uboot都是烧写到SD卡中的,因为方便烧写。U-Boot启动日志是嵌入式系统启动时产生的关键信息,它提供了硬件初始化、环境变量、内存配置、设备检测等多种重要信息。

2024-08-17 23:49:26 366

原创 U-Boot的详细介绍

定义:U-Boot是一种开源的嵌入式引导加载程序,它是启动嵌入式系统的关键组件。主要功能启动加载:U-Boot能够从不同的存储介质(如闪存、硬盘、网络等)加载和启动操作系统。它支持多种启动方式,包括串口、网口、USB等。系统配置:能够配置系统的各种参数,包括CPU频率、内存大小、设备接口等。通过设置环境变量,可以灵活地配置系统。文件系统支持:U-Boot支持各种文件系统,如FAT、ext2、ext3、JFFS2等。它可以从文件系统中加载和启动内核、根文件系统等。网络支持。

2024-08-17 23:46:02 296

原创 软件SPI和硬件SPI的区别

软件SPI和硬件SPI各有优劣,选择哪种方式取决于具体的应用场景和需求。在硬件资源充足且对性能要求较高的情况下,推荐使用硬件SPI;而在硬件资源有限或需要特殊配置时,可以考虑使用软件SPI。同时,随着技术的发展和微控制器的不断更新换代,硬件SPI的性能和灵活性也在不断提升,使得其在更多场合下成为首选的SPI实现方式。

2024-08-15 23:24:34 1055

原创 硬件I2C和软件I2C(模拟I2C)的区别

硬件I2C和软件I2C(模拟I2C)是两种不同的实现I2C(Inter-Integrated Circuit,集成电路间)通信协议的方式,它们在实现方式、性能特点以及应用场景上存在显著差异。

2024-08-15 21:35:19 1861

原创 SGM3157模拟开关

SGM3157是一款基于CMOS工艺的模拟开关,具有低功耗、低传输延迟和低输出阻抗等良好特性,适用于多种模拟信号切换和路由应用。

2024-08-14 16:37:18 1353

原创 C语言基础知识:*p++与*(p++),*++p与*(++p),(*p)++ 与 ++(*p),++*p的详细理解

p++ 和 *(p++) 都返回 p 自增之前的值。*++p 和 *(++p) 都返回 p 自增之后指向的值。关键在于理解前缀自增(++p)和后缀自增(p++)之间的区别,以及它们与解引用操作(*)的结合方式。前缀自增先改变指针的值,然后返回新的指针值;后缀自增返回原指针值,然后改变指针的值。解引用操作(*)则用于获取指针当前指向的值。二、(*p)++ 与 ++(*p)在C和C++中,(*p)++ 和 ++(*p) 这两个表达式虽然看起来相似,尽管它们都涉及到指针p。

2024-08-14 07:53:07 2458

原创 利用定时器实现按键消抖

但是 t1~t2 和 t2~t3 这两个时间段是小于我们设置的定时器中断周期(也就是消抖时间,比如 10ms),所以虽然 t1 开启了定时器,但是定时器定时时间还没到呢 t2 时刻就重置了定时器,最终只有 t3 时刻开启的定时器能完整的完成整个定时周期并触发中断,我们就可以在定时器的中断处理函数里面做按键处理了,这就是定时器实现按键防抖的原理, Linux 里面的按键驱动用的也是这个原理!如果按键是用中断方式实现的,那就更不能在中断服务函数里面使用延时函数,因为中断服务函数最基本的要求就是快进快出!

2024-08-13 13:35:09 642

原创 51和stm定时器初值计算的区别

51单片机:定时器初值的计算相对简单,主要基于晶振频率和定时器位数进行计算。STM32:定时器初值的计算更为复杂和灵活,需要根据定时器频率、预分频器、计数周期等多个因素进行综合考虑。两者在定时器初值计算上的主要区别在于STM32提供了更多的配置选项和更高的灵活性,而51单片机则相对简单直接。

2024-08-13 11:03:22 689

原创 阿里云服务器ECS的使用

定义:云服务器ECS是一种让用户能够像使用水、电、天然气等公共资源一样便捷、高效地使用服务器的云计算服务。它免去了用户采购IT硬件的前期准备,实现了计算资源的即开即用和弹性伸缩。优势:多样化计算能力:支持主流的x86、Arm处理器架构,覆盖CPU、GPU、弹性裸金属及超级计算集群等服务器类型,提供了上百种实例规格族,满足不同规模和类型用户的需求。便捷易用:无需自建机房,分钟级交付,并提供了行业通用标准API、性能监控框架和主动运维体系,支持多种运维能力,提高易用性和适用性。

2024-08-12 22:37:18 823

原创 正则表达式

b 表示单词边界,[A-Za-z0-9._%+-]+ 匹配邮箱的用户名部分,@ 是邮箱地址中必须的符号,[A-Za-z0-9.-]+ 匹配域名部分,\. 匹配点字符(. 在正则表达式中是特殊字符,所以需要用 \ 转义),[A-Z|a-z]{2,} 匹配顶级域名(如 .com、.org 等)。+(加号)匹配前面的子表达式一次或多次;< 和 > 匹配HTML标签的开始和结束,([a-z]+) 匹配标签名,([^

2024-08-12 17:48:20 999

原创 crontab 设置周期性被执行的任务的工具

1.1 crontab 服务管理crontab 服务管理是 Unix 和类 Unix 系统(如 Linux 和 macOS)中用于设置周期性被执行的任务的工具。crontab 服务管理是 "cron table"(cron 表格)的缩写,它允许用户为任务安排在未来某个时间点执行,也可以定期重复执行。1.2 crontab 定时任务设置1) 基本语法crontab [选项]2) 选项说明crontab -lcrontab -e。

2024-08-11 23:57:12 1023

原创 时钟频率的更改

处理器内核更改时钟频率时可能需要启用备用时钟频率,而外设设置时钟频率通常不需要这一步骤,这主要是由于两者在系统设计、功能和操作复杂性上的差异。

2024-08-11 23:31:21 357

原创 裸机开发复位原理

因此,即使开发板在裸机开发时没有显式定义中断向量表或中断复位函数,按下复位键仍然能够实现复位操作。这是因为复位操作依赖于硬件复位电路和微控制器的内置复位机制,而不是中断向量表或中断复位函数。复位后,微控制器会从固定的复位向量地址开始执行代码,并执行必要的初始化操作。

2024-08-10 23:30:20 496

原创 汇编文件start.s中清BSS段 ,__bss_start地址对齐问题

orr r0, r0, #0x13 /* r0或上0x13,表示使用SVC模式 */bic r0, r0, #0x1f /* 将r0寄存器中的低5位清零,也就是cpsr的M0~M4 */cmp r0, r1 /* 比较r0和r1,也就是__bss_start和__bss_end的值*/, {r2} /* 向r0的地址写入0,然后r0寄存器保存的地址值加1 *//* 设置sp指针 *//* 清BSS段 */

2024-08-10 10:39:25 563

原创 SDK移植和BSP工程管理

SDK包里面会用到很多数据类型,所以需要在cc.h里面定义一些常用的数据类型。设备为MCIMX6Y2,

2024-08-09 16:45:42 167

原创 裸机LED驱动开发C语言版本大致流程

设置CPSR寄存器的bit4-0,也就是M[4:0]为10011=0X13。MRS将CPSR寄存器数据读出到通用寄存器里面,MSR指令将通用寄存器的值写入到CPSR寄存器里面去。Sp可以指向内部RAM,也可以指向DDR,我们将其指向DDR。512MB的范围0x80000000~0x9FFFFFFF。栈大小,0x200000=2MB。处理器栈增长方式,对于A7而言是向下增长的。链接脚本描述了要连接的文件,以及链接顺序,和链接首地址。使用b指令,跳转到C语言函数,比如main函数。

2024-08-09 15:46:04 242

原创 Linux-ARM裸机开发-汇编LED驱动实验流程

设置GPIO1_DR寄存器bit3为1,也就是设置为输出模式。Imxdownlaod会向led.bin添加一个头部,生成新的load.imx文件,这个load.imx文件就是最终烧写到SD卡里面去的。可以得到,我们烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400,也就是1024。Imxdownload使用方法,确定要烧写的SD卡文件,我的是/dev/sdb,可以使用ls /dev/sd*查看。头部大小为3KB,加上偏移的1KB,一共是4KB,因此在SD卡中bin文件起始地址为4096。

2024-08-09 15:31:10 758

原创 shell脚本

shell脚本支持条件判断,虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。它可以用于检查文件的存在性、类型、权限等,也可以用于比较数值的大小、字符串的相等性等。这只是一个简单的示例,shell脚本可以做更复杂的任务,比如文件操作、网络通信等。cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行。需要注意的是,test命令和方括号之间需要有空格,并且test命令的返回值为0或1,用于判断条件的成立与否。

2024-08-08 23:59:46 925

原创 ARM处理器和stm32的一些区别

ARM处理器定义:ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器,全称为Advanced RISC Machine(高级精简指令集机器)。背景:ARM公司是全球领先的半导体知识产权(IP)提供商,其设计的处理器架构广泛应用于智能手机、平板电脑、嵌入式控制、多媒体数字等领域。STM32定义:STM32是意法半导体(ST)推出的基于ARM Cortex-M内核的32位闪存微控制器系列。背景。

2024-08-08 17:33:11 977

原创 make工具和Makefile文件的引入

make:一般说GNU Make,是一个软件,用于将源代码文件编译为可执行的二进制文件,make工具主要用于完成自动化编译。在上述Makefile中,我们定义了编译器CC,编译选项CFLAGS,源代码文件SRC,目标文件OBJ和目标程序名称TARGET。最后,使用命令make来执行Makefile文件中定义的编译规则,即可自动进行源代码的编译和链接,生成目标程序。执行以上命令后,Make工具会根据Makefile文件中的定义进行编译,生成名为myprogram的目标程序。首先,我们需要安装make工具。

2024-08-07 11:55:04 636

原创 “八股文”在实际工作中是无任何用处的空谈?

是工作能力、工作经验还是背题能力?理想的面试流程应该是综合的,既包括对基础知识的考察,也包含实际编程能力的测试(如代码编写、系统设计等),以及个人素质、团队合作能力的评估。关于“八股文”(在程序员面试中通常指的是一系列常见且固定的面试问题,如算法题、框架原理、设计模式等)在程序员面试及实际工作中的作用,这是一个复杂而多面的议题,不同立场的人会有不同的看法。因此,不应简单地将“八股文”视为助力或阻力,也不是无任何用处的空谈,而应将其作为面试过程中的一个工具,合理、适度地使用,以实现全面、公正的评估。

2024-08-07 11:34:39 419

原创 vim编辑器

Linux系统都会自带vi编辑器,但是vi编辑器不好用,所以建议大家安装vim编辑器安装命令:sudo apt install vimVim的特点和功能:模态编辑:Vim具有多个编辑模式,包括插入模式、命令模式和可视模式。这些模式使得编辑效率更高,可以快速切换和执行不同的编辑操作。快捷键:Vim使用大量的快捷键来执行常见的编辑任务。这些快捷键可以大大减少手动输入的需要,提高编辑速度。强大的搜索和替换功能:Vim支持正则表达式搜索和替换,可以快速定位和修改文本。

2024-08-07 01:56:59 965

原创 Linux文件链接

Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。软链接和硬链接的区别在于:软链接(Symbolic Link)是一个特殊的文件,它只包含了原始文件的路径信息,原始文件和链接文件是两个不同的实体。软链接可以跨越文件系统边界,并且可以链接到目录。符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。

2024-08-07 01:27:38 836 1

原创 Ubuntu文件操作(压缩与解压缩、用户组管理、权限)

初次创建系统时创建的用户权限比普通用户多,没有root用户多,初次创建的用户可以创建普通用户。上面的tar命令只提供了打包和解包的功能,tar在提供打包和解包的同时使用gzip/bzip2进行压缩,实现类似windwos下winRAR软件的命令。chown命令是一个Linux和Unix操作系统中的命令,用于更改文件或目录的所有者。gzip虽然可以对文件夹进行压缩,但是并不能提供打包的服务,只是对文件夹中的所有文件进行了单独的压缩。请注意,只有具有足够权限的用户才能使用chown命令更改文件或目录的所有者。

2024-08-06 23:47:51 1180

原创 Ubuntu文件操作(文件系统结构、磁盘管理)

根目录(Root Directory)是计算机文件系统中的顶级目录,位于文件系统的树形结构的最上层。在Linux系统中,根目录的路径是“/”,是整个文件系统的起始点。所有的目录都是由根目录衍生出来的。/bin 存放二进制可执行文件,这些命令在单用户模式下也能够使用。可以被root和一般的账号使用。/boot Ubuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。/dev 设备驱动文件的目录/etc 存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址。

2024-08-06 23:00:26 1389

原创 ubuntu软件安装

锁定文件将会创建 于/var/lib/apt/lists/、/var/lib/dpkg/、/var/cache/apt/archives/ 中。当你没有看到 apt-get 或者 apt 进程的情况下在上面两个不同的文件夹中看到了锁定文件,是因为进程由于某个原因被杀掉了,因此你需删除锁定文件来避免该错误。问题原因还可能在于其它的程序如系统的自动更新、新立得等正在使用apt-get进程,所以解决方法也就是将这一进程关闭。使用apt包管理工具,apt可以自动下载,配置,安装。方法3:删除锁定文件。

2024-08-05 16:30:08 302

原创 shell常用命令

打开终端进行命令行操作要打开Ubuntu终端进行命令行操作,可以按下"Ctrl + Alt + T"快捷键,或者按下"Super"键(通常是Windows键)并搜索"Terminal"来打开终端。

2024-08-05 14:51:36 1621

原创 嵌入式Linux之Ubuntu

Linux应用最广泛的服务器操作系统Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Limnux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

2024-08-04 16:51:24 704

原创 栈的原理和实现

栈是一种非常重要的数据结构,其原理和实现方式多种多样。在实际应用中,可以根据具体需求选择合适的实现方式。无论是静态栈、动态栈还是链式栈,它们都遵循后进先出的原则,并在不同的场景下发挥着重要的作用。

2024-08-03 23:56:14 682

原创 C++面试基础算法的简要介绍

C++是一种广泛使用的编程语言,尤其在算法和数据结构的实现中占据重要地位。以下是对C++基础算法的一些介绍,涵盖了排序、查找、搜索算法以及基本的遍历算法等方面。

2024-08-03 23:47:00 751

原创 STM32F407 DHT11 数字温湿度传感器实验

先主机发送开始信号,即:拉低数据线,保持 t1(至少 18ms)时间,然后拉高数据线 t2(20~40us)时间,然后读取 DHT11 的响应,正常的话,DHT11 会拉低数据线,保持 t3(40~50us)时间,作为响应信号,然后 DHT11 拉高数据线,保持 t4(40~50us)时间后,开始输出数据。主要是通过单总线操作时序来读取 DHT11 的温湿度值的,DHT11的温湿度值通过DHT11_Read_Data 函数读取,如果返回 0,则说明读取成功,返回 1,则说明读取失败。

2024-08-02 23:46:18 707

原创 Linux笔记

打开hello.c这个文件编辑,并且扔到后台,不占用命今终端。gcc 代码文件.c o 应用程序的名字。编译hello.c这个文件成为hello这个应用程序。例如: gcc hello.c -o helle。ls -a:查看所有文件(包括以.开头的隐藏文件)man 2 : linux给你提供的函数说明。man 7 :杂项说明: 协议说明,包说明。例如: gedit hello.c &man 5: 系统内部的脚本文件说明。例如:./hello。man 3 :第三方提供的函数说明。

2024-08-02 23:29:20 307

原创 Python基础教程(三)类和对象、异常处理和模块

在Python中,self是一个特殊的参数,它代表当前对象实例本身。通过使用self,我们可以在类的方法中引用和操作对象的属性和方法。在类的方法中,通常第一个参数会被命名为self,用于接收当前对象的引用。当我们调用对象的方法时,Python会自动将对象本身作为第一个参数传递给self。使用self可以让类的方法操作对象的属性和方法。

2024-08-01 22:50:56 1579 1

原创 Python基础教程(二)字符串和函数

匿名函数是一种不需要命名的函数。它通常用于简单的函数操作,可以在需要时直接定义和使用,而不需要为其分配一个特定的名称。匿名函数在很多编程语言中都存在,例如Python、JavaScript和Ruby等。在Python中,使用lambda关键字来定义匿名函数。

2024-08-01 16:18:29 1367

VMware16 key.txt

VMware16的一些密钥

2024-08-04

Read aloud 3.lrc

Read aloud 3.lrc

2022-11-18

空空如也

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

TA关注的人

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