自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是ARM

ARM内核是ARM架构的具体实现,由ARM公司或授权厂商基于ARM架构设计。每种内核对应不同的性能和功耗需求,满足从低功耗嵌入式设备到高性能计算的多种场景。主要内核分类如下:

2024-11-19 22:07:37 830

原创 IIC和SPI的区别和相同之处

I²C:基于时钟同步的半双工通信,每次传输一位数据。通过 主设备的时钟信号同步数据传输,采用位级应答机制和 仲裁机制,支持多主设备的并行操作。SPI:基于时钟同步的全双工通信,可以在同一个时钟周期内进行数据的发送和接收。没有应答机制,也没有仲裁机制,通常用于单主多从的场景。

2024-11-03 17:09:27 1099

原创 SPI协议——笔记

SPI(Serial Peripheral Interface,串行外设接口)是一种常用的串行通信协议,广泛应用于微控制器、传感器、存储器和显示设备之间的数据传输。它通常用于短距离的高速通信,支持全双工通信

2024-11-03 17:03:20 1689

原创 嵌入式学习——IIC协议

IIC(Inter-Integrated Circuit)是一种串行通信协议,由飞利浦公司于1980年代提出。它允许多个从设备通过两条线(SDA和SCL)与一个或多个主设备进行通信。IIC协议是多主、多从的,适合在短距离内的设备间通信。

2024-11-02 17:33:38 472

原创 UART-通用异步收发器

UART通信主要有两个部分构成:发送器和接收器,也就是我们常见的(RX接收,TX发送)两个独立的线路来实现数据的双向传输,由于是异步的,UART并不需要时钟信号,而是通过设定一定的波特率来进行双方的通信,可以理解为协议。

2024-10-30 23:02:22 1105

原创 RTOS之队列

在RTOS官方文档中,对队列的定义讲述的很清晰,队列是任务间通信的主要方式,它们可以用于在任务之间 以及中断和任务之间发送消息。在大多数情况下,队列用作线程安全的 FIFO(先进先出)缓冲区, 新数据被发送到队列的后面,但也可以发送到前面。

2024-10-23 20:11:01 493

原创 NVIC和EXIT寄存器工作

EXTI(外部中断/事件控制器) 和 NVIC(嵌套向量中断控制器) 的控制寄存器是不同的。这两个控制器分别有自己独立的一套寄存器来完成不同的功能。EXTI 寄存器主要用于外部中断的配置和管理,而 NVIC 寄存器则用于整体中断的优先级管理和使能控制。

2024-10-15 21:04:37 1575

原创 STM32的GPIO寄存器描述

软件控制硬件(在程序中操作对应控制器),通过寄存器,就是 寄存器(可以存放数据),但是其中的数据具有特定的硬件含义(查看芯片手册),设置寄存器的值,对应的控制器就执行对应的工作。相当于寄存器就是控制器硬件留给软件的接口具体操作:寄存器是硬件与软件的接口:寄存器的具体意义由芯片手册定义:寄存器映射到特定的内存地址:通过寄存器配置控制器:通过编写软件来修改寄存器的内容,程序可以控制硬件如何工作。比如:下面以 STM32F103RCT6为例子: 在STM32F103RCT6中,GPIO端口的配置主要

2024-10-14 21:33:31 1652 2

原创 STM32中的RAM和ROM分别是什么

随机存取存储器)和,只读存储器)是计算机系统中的两种常见存储器类型,它们各自有不同的功能和用途。

2024-10-14 20:11:46 1194 3

原创 STM32的GPIO片上外设

GPIO 是 MCU 上的引脚,可以根据配置用来作为输入或者输出。

2024-10-14 20:09:47 2217

原创 每天一道面试题6——Linux的基本组件有哪些?

Linux的基本组件有哪些?

2024-10-08 22:14:53 710

原创 每天一道面试题5——Linux内核包含哪些部分?

Linux 内核由多个子系统组成,每个子系统负责不同的操作系统功能。

2024-10-08 22:01:51 838

原创 每天一道面试题4——智能指针是一个指针吗?为什么称为智能指针?

智能指针本质上是一个类对象,它通过封装指针并重载运算符,使其使用方式像普通指针。但与普通指针不同,智能指针具有自动管理资源的能力,称为“智能”指针的原因在于它能够。

2024-10-05 15:28:46 608

原创 每天一道面试题3——进程的死锁是什么意思?,如何解决进程死锁的情况?

(Deadlock)是指一组进程在执行过程中,彼此互相等待,导致这些进程都无法继续执行的情况。换句话说,进程因互相占有资源并且相互等待对方释放资源而陷入了永久等待的状态。

2024-10-05 15:24:52 453

原创 为什么说共享内存高效?

以管道为例,进程 A 通过写入管道将数据传输给进程 B,数据会先从进程 A 的用户空间复制到内核空间,然后再从内核空间复制到进程 B 的用户空间,这两个拷贝步骤增加了通信的时间和资源消耗。比如,在分布式系统中,不同的服务器进程可以使用套接字进行数据的交互、请求响应、负载分担等。:套接字不仅可以用于本地主机上进程之间的通信(通过 UNIX 域套接字),还可以跨网络用于不同主机上的进程通信(通过 TCP/IP 套接字)。:套接字是全双工的,可以同时进行数据的发送和接收,这使得它在需要双向通信的场景中非常灵活。

2024-10-05 15:18:10 1031

原创 每天一个面试题2——进程间的通信方式有哪些?

进程间的通信方式主要有以下几种: 管道(Pipe) 概念:管道是一种半双工通信方式,数据只能在一个方向上流动。通常用于父子进程之间的通信。 特性: 匿名管道:只能在具有亲缘关系的进程间使用(如父子进程)。 命名管道(FIFO):可以用于任何两个不相关的进程间通信,具备双向通信能力。 优点:简单易用,适合单向通信。 缺点:只能传递无格式的字节流,不适合复杂数据的传递,效率不高。 信号(Signal) 概念:信号是一种用于通知进程某个事件发生的异步通信机制。

2024-10-05 15:15:09 485

原创 冒泡排序,插入排序,快速排序,选择排序

快速排序通过选择一个“基准”(pivot)元素,将数组分为两部分,一部分比基准小,另一部分比基准大,然后递归排序。插入排序通过逐个元素进行插入操作,将每个元素插入到它之前已经排序好的部分。选择排序每次从未排序的部分中选择最小的元素,并将其放到已排序部分的末尾。数组初始状态:[5, 2, 9, 1, 5, 6]数组初始状态:[5, 2, 9, 1, 5, 6]数组初始状态:[5, 2, 9, 1, 5, 6]数组初始状态:[5, 2, 9, 1, 5, 6]排序完成,最终数组为。排序完成,最终数组为。

2024-10-05 15:09:26 1958 1

原创 每天一个面试题1-描述一下哈希算法的实现过程?

哈希算法(Hash Algorithm)是一种将任意长度的输入数据转换为固定长度的输出数据的算法,输出的结果通常称为哈希值、散列值或摘要。哈希算法广泛应用于数据校验、加密、数字签名、数据结构(如哈希表)等场景。哈希算法实现过程的描述

2024-09-29 22:15:27 1356

原创 Qt——如何创建一个项目

本文主要通过实操带领大家来实现基础文件的操作,主要包括文件的打开,读取,写入,当然文件读写我们可以有几种不同的方式来进行操作,分别是文件流,字节流来进行的操作这里就需要两个类分别是文件流(QTextStream)和字节流(QDateStream),那么对于文件类(QFile)完成对文件的一个管理和操作。

2024-09-29 18:47:54 754 1

原创 模态和非模态

那么我们说模态呢,就是一种阻塞窗口,用户和应用程序不能切换到其他窗口进行交互,会阻塞等待当前窗口选择完毕才能与其他窗口进行交互,非模态是一种非阻塞窗口,允许用户和应用程序与其他窗口进行交互,用户不必操作完当前窗口就能切换到其他窗口进行操作

2024-09-28 15:03:55 1172

原创 Qt中常用类和函数解释

本篇文章详细列举了Qt中大部分要用到的类和类中常用函数的解释说明,帮助大家来快速学习Qt

2024-09-28 14:48:22 1767

原创 新手如何使用Qt——方法使用

那么这篇文章其实是我在使用Qt的过程当中呢,我发现在Qt使用过程中,在我理解信号和槽这个概念后,在编写槽函数数的时候,发现了自身存在的问题,我的难点是在于当我在编写槽函数的时候,我知道这个槽函数是用来干什么的,但是不知道用什么类,什么函数,因为在qt中的类有很多,每个类下面又有很多函数,导致我不知道该用什么类下面的函数。那么这个问题是通过阅读技术文档来帮助我快速找到这个类和函数,下面我将介绍一下方法。

2024-09-28 14:47:26 1762 3

原创 引用和指针的区别

引用(reference)和指针(pointer)都是 C++ 中用来间接访问内存中对象的机制,但它们有一些重要的区别。以下是它们在语法、用法和特性上的详细区别。

2024-09-24 22:32:12 3879

原创 C++三大特性之多态

关于多态,是c++中最重要的东西,通过虚函数来实现多态这种特性。

2024-09-24 22:16:12 1211

原创 C++三大特性——继承性(超万字详解)

在C++中,三大特性通常是指面向对象编程(OOP)的三大基本特性,它们是封装(Encapsulation)继承(Inheritance)和多态(Polymorphism)。本文重点讲述继承性,也简单介绍一些封装性。

2024-09-22 20:53:37 1789

原创 C++中友元概念

在类创建对象,类的成员存在权限,默认有些成员不能在类外进行访问,但是有特定情况想要访问对象的私有成员,允许一种特殊的访问方式(在类外也可以访问到对象的私有成员),叫做友元访问,如何能够实现友元访问功能呢,一般我们通过友元函数,友元类,或则友元成员函数来实现,通过友元访问,能够无视private和protected,直接能够访问到不能类外访问的属性,下面我们将来分开描述各种友元来访问类中的属性的实现

2024-09-19 19:23:58 795 1

原创 C++中的const static this

前面我们说到了C++中的类创建,其中类包括了函数,变量,以及构造函数,但是和C语言当中一样,我们对变量和函数有const和static修饰,在C语言当中我们用const修饰变量表示不可修改的变量,那么在C++中是不是也是这样呢?明确告诉大家,有共同点也有不同点,大多是不同的

2024-09-18 21:29:45 1332

原创 C++中类的创建和声明

说实话,C++和C语言有比较大的差别,在C语言中我们面向的是过程,即要怎么实现功能的过程,在C++中,我们面向对象,将这些功能和函数封装起来,用到直接调用对象,那这个过程也是基于C语言的,但是大致不同的是在C语言中我们需要自己写各种功能,在C++中我们可以用其他人写好的,封装好的函数来实现相应的功能,所以涉及到的函数也相对较多。了解了这样一个大致过程,其实我们可以开始学习c++时,要注重C++中的各种语法知识和操作细节,相比C语言有不同,但是也有相似的之处,本文主要用来进行类的声明和创建,类的概率在C++中

2024-09-18 19:30:54 760

原创 客户端(服务器下载文件)

编写两个程序,实现客户端下载服务器文件

2024-09-13 20:42:20 653

原创 C++与C语言的区别

本文主要用C语言和C++做对比来学习C++,便于个人理解。C++包含C语言,是对C语言的扩展,在C++中,支持C语言的语法使用,C++是C语言的超集。

2024-09-13 20:03:48 7224

原创 为什么嵌入式应届生面试这么难?

嵌入式面试为什么这么难

2024-09-11 21:59:21 701

原创 IO多路复用

IO多路复用

2024-09-11 21:54:07 570

原创 TCP通信实现

本文介绍了如何实现TCP通信,以及通过TCP通信引入了通信过程中,每个层协议数据的封包过程,以及封包内容,封包过程,

2024-09-10 22:43:07 2642

原创 TCP通信三次握手、四次挥手

介绍了三次握手和四次挥手的过程

2024-09-10 22:41:56 1300

原创 IP地址中的子网掩码

定义:子网掩码(Subnet Mask)是计算机网络中的一个重要概念,用于将IP地址划分为网络部分和主机部分。

2024-09-07 21:04:37 2968

原创 孤儿进程、僵尸进程、守护进程(精灵进程)

定义:孤儿进程是指那些其父进程已经结束,但它们依然在运行的进程定义:守护进程(精灵进程)(Daemon Process)是指那些在后台运行的进程,通常不与用户直接交互。精灵进程在系统启动时启动,持续运行,并在系统关闭时退出。它们通常用于提供系统服务或进行系统管理任务。定义:僵尸进程(Zombie Process)是指那些已经完成执行但仍然存在于系统中的进程。这些进程已经终止,但它们的进程控制块(PCB)还未被父进程读取和清理。

2024-09-07 20:38:48 528

原创 UDP通信实现

在前面我们知道,在使用UDP通信是在传输层选择使用UDP协议,并且在传输层只有两个协议,分别是UDP和TCP协议,在本节中,我们就来学习如何实现UDP通信

2024-09-06 21:49:47 2027

原创 如何快速理解网络编程

在一个主机中,我们能进行进程间通信,但是随这时代发展,我们不可能只是在单独的一个主机中传输数据,,因此有很多天才就发明了不同主机间的通信方式。下面我们就简单看一下网络的发展历程,简单了解即可网络编程的起源与计算机网络的演变密切相关,其发展可以追溯到上世纪60年代和70年代的早期网络研究。1. ARPANET(1960年代末)ARPANET(Advanced Research Projects Agency Network)是最早的计算机网络之一,由美国国防部高级研究计划局(ARPA)资助和开发。

2024-09-06 16:24:03 1124

原创 如何理解互斥锁概念

本文简要介绍了互斥锁是如何实现的,以及如何使用

2024-09-05 19:54:55 942

原创 如何理解进程和线程之间的关系

进程是资源分配的单位,线程是进程中的执行单元。一个进程可包含多个线程,线程共享进程的资源(如内存),但拥有自己的栈和执行路径。线程开销小、效率高,进程之间独立、资源隔离较好。进程间通信复杂。除此之外,还引入了进程间通信的同步互斥机制,这个机制只要是进程或者是线程在调用共享资源时,大部分情况下都会用到

2024-09-05 19:43:27 2128

labview2019的virtualBench驱动软件

labview中的没有对应的virtualBench程序框图,解决这个问题需要安装驱动软件,将这个驱动文件解压安装,就能在测量i/o的窗口放置virtualBench程序框图

2024-08-08

Altium Designer 文件包

Altium Designer PCB制作工具

2024-08-08

空空如也

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

TA关注的人

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