嵌入式软件stm32面试
一、STM32的内核型号有哪些?
STM32系列是STMicroelectronics(意法半导体)生产的基于ARM Cortex-M内核的微控制器产品线。这些产品按照不同的内核架构和性能特点分为了主流产品、超低功耗产品和高性能产品。
1.1 主流产品
- STM32F0 系列:搭载 ARM Cortex-M0 内核。
- STM32F1 系列:搭载 ARM Cortex-M3 内核。
- STM32F3 系列:搭载 ARM Cortex-M4 内核,带有FPU和DSP指令。
1.2 超低功耗产品
- STM32L0 系列:搭载 ARM Cortex-M0+ 内核。
- STM32L1 系列:搭载 ARM Cortex-M3 内核。
- STM32L4 和 STM32L4+ 系列:搭载 ARM Cortex-M4 内核。
1.3 高性能产品
- STM32F2 系列:搭载 ARM Cortex-M3 内核。
- STM32F4 系列:搭载 ARM Cortex-M4 内核。
- STM32F7 系列:搭载 ARM Cortex-M7 内核,提供更高的性能和更多的功能。
- STM32H7 系列:搭载 ARM Cortex-M7 内核或双核架构(Cortex-M7与Cortex-M4)。
二、STM32主频是多少,传感器和单片机总线类型有哪些?
2.1 主频
STM32微控制器的主频由硬件和软件编程决定。通常,外部晶振的频率可以通过倍频器来提高到所需的主频水平。具体主频值视系列和型号而定。
2.2 传感器和单片机总线类型
STM32微控制器通常支持多种标准和协议,包括:
- 单总线
- I2C(IIC)
- SPI
- RS485
- RS232
三、STM32F1和F4的区别?
特性 | STM32F1系列 | STM32F4系列 |
---|---|---|
内核类型 | Cortex-M3 | Cortex-M4 |
主频 | 最高72MHz | 最高168MHz |
浮点运算 | 无浮点运算单元(FPU) | 具有浮点运算单元(FPU) |
功能性能 | 外设功能相对较简单 | 外设更丰富、功能更强大 |
内存大小 | 内部SRAM最大64KB | 内部SRAM通常为192KB(112+64+16) |
四、介绍STM32启动过程?
- 通过Boot引脚设置初始启动地址:STM32的Boot引脚用于选择启动模式,这些模式可以是系统内存、主闪存内存或嵌入式SRAM。
- 初始化栈指针(__initial_sp):微控制器首先初始化栈指针,栈指针的初始值通常位于启动时代码的起始部分。
- 指向复位处理程序(Reset_Handler):微控制器跳转到Reset_Handler,这是一个启动函数,完成基本的硬件设置工作。
- 设置异常和中断处理程序:如HardFault_Handler,处理硬件失败异常。
- 设置系统时钟(SystemInit):在Reset_Handler中,调用SystemInit函数,配置微控制器的系统时钟。
- 调用C库启动例程(_main 或 main):启动代码会调用C库的初始化代码,然后进入main函数,这是用户程序的入口点。
五、介绍一下GPIO?
STM32微控制器的GPIO(通用输入/输出)引脚可以配置为不同的工作模式,以便于它们可以用于不同的应用。下面是STM32 GPIO的8种基本工作模式的说明:
序号 | 模式名称 | 描述 |
---|---|---|
1 | GPIO_Mode_AIN | 模拟输入,用于读取模拟信号,如传感器输出。 |
2 | GPIO_Mode_IN_FLOATING | 浮空输入,高阻抗状态,不连接上拉或下拉电阻。 |
3 | GPIO_Mode_IPD | 下拉输入,内部连接下拉电阻,无高电平信号时输出低电平。 |
4 | GPIO_Mode_IPU | 上拉输入,内部连接上拉电阻,无低电平信号时输出高电平。 |
5 | GPIO_Mode_Out_OD | 开漏输出,可输出低电平,高电平需要外部上拉。 |
6 | GPIO_Mode_Out_PP | 推挽输出,可以输出高电平和低电平。 |
7 | GPIO_Mode_AF_OD | 复用开漏输出,用于特定的外设复用功能,如I2C通讯。 |
8 | GPIO_Mode_AF_PP | 复用推挽输出,用于特定的外设复用功能,如USART、TIM等。 |
六、UART串行通信方式介绍?
6.1 同步通信
-
I2C (Inter-Integrated Circuit) 半双工:
- I2C是一种串行通信总线,用于连接微控制器和外部设备。它使用两根线(串行数据线SDA和串行时钟线SCL)进行通信。
-
SPI (Serial Peripheral Interface) 全双工:
- SPI是一种串行通信协议,用于连接微控制器和外部设备。它通常使用四根线(MOSI、MISO、SCK、SS)。
6.2 异步通信
-
RS485 半双工:
- RS485是一种串行通信标准,通常用于长距离通信和多点通信。
-
RS232 全双工:
- RS232是一种常见的串行通信标准,也被称为串口通信。
6.3 波特率
UART协议中的波特率(Baud Rate)是指数据传输的速率,即每秒钟传输的比特数(bit/s)。波特率115200表示每秒钟传输115200个比特。
七、串口如何配置?
7.1 串口时钟使能,GPIO时钟使能
首先需要使能串口和GPIO的时钟,确保它们可以正常工作。这可以通过配置相应的时钟控制寄存器来实现。
7.2 串口复位
在初始化之前,对串口进行复位操作,以确保其处于初始状态。
7.3 GPIO端口模式设置
配置用于串口通信的GPIO引脚的工作模式。通常,TX引脚设置为复用推挽输出模式,而RX引脚设置为浮空输入模式。
7.4 串口参数初始化
初始化串口的参数,包括波特率、数据位、停止位、奇偶校验位和数据流控制等。
7.5 开启中断并初始化NVIC
如果需要使用中断来处理串口接收或发送事件,则需要开启中断并初始化相应的中断向量控制器(NVIC)。
7.6 使能串口
启用串口,使其可以开始工作。这通常涉及设置相应的使能位或控制寄存器。
7.7 编写中断处理函数
如果使用了中断,需要编写相应的中断处理函数来处理串口接收或发送中断事件。
九、I2C总线在传送数据过程中共有三种类型信号?
9.1 开始信号
在I2C总线通信中,开始信号表示数据传输的开始。它由SCL(时钟线)为高电平时,SDA(数据线)由高电平向低电平跳变而产生。
9.2 结束信号
结束信号表示数据传输的结束。它由SCL为高电平时,SDA由低电平向高电平跳变而产生。
9.3 应答信号
在I2C通信中,接收器在接收到8位数据后,需要向发送器发送应答信号,表示已经成功接收数据。应答信号是一个特定的低电平脉冲。
十、I2C配置主机模式端口该怎么配置?
10.1 硬件模式
在硬件模式下,使用了复用开漏输出,这意味着输出引脚既不上拉也不下拉,而是由外部电路控制。这种模式适用于快速模式,即400 Kbit/s的数据传输速率。
10.2 软件模拟
在软件模拟模式下,使用了开漏输出。这意味着输出引脚在低电平时输出低电平,而在高电平时不输出电平,这需要外部上拉电阻。这种模式适用于标准模式,即100 Kbit/s的数据传输速率。
10.3 硬件配置步骤
- 启用GPIO时钟和I2C时钟。
- 配置GPIO引脚为复用开漏模式。
- 初始化I2C参数,包括通信速度、地址模式和数据传输方向等。
- 启用I2C外设。
十一、什么是I2C仲裁机制?
I2C总线的仲裁机制是指在多主机环境中,多个主机同时尝试占用总线进行通信时,仲裁机制用于决定哪个主机可以优先占用总线。具体实现方法如下:
- 检测总线状态:每个主机在发送数据时,都会实时监测SDA线的状态。
- 比较数据:如果一个主机发送了低电平,而另一个主机发送了高电平,发送高电平的主机就会认为总线被占用,从而退出仲裁。
- 胜者占总线:最终,发送低电平的主机继续占用总线。
十二、SPI需要几根线?
SPI通信需要以下四根线:
- MOSI (Master Out Slave In):主机输出,设备输入。
- MISO (Master In Slave Out):主机输入,设备输出。
- SCK (Serial Clock):串行时钟线,由主机提供。
- SS (Slave Select):从设备选择线,通常为低电平有效。
十三、SPI通信的四种模式?
SPI通信的四种模式取决于时钟极性(CPOL)和时钟相位(CPHA):
- 模式0:CPOL=0,CPHA=0。时钟空闲状态为低电平,数据在时钟上升沿采样。
- 模式1:CPOL=0,CPHA=1。时钟空闲状态为低电平,数据在时钟下降沿采样。
- 模式2:CPOL=1,CPHA=0。时钟空闲状态为高电平,数据在时钟下降沿采样。
- 模式3:CPOL=1,CPHA=1。时钟空闲状态为高电平,数据在时钟上升沿采样。
十四、该如何确定使用哪种模式?
确定SPI通信模式的方法如下:
- 查看设备手册:大多数SPI设备会在数据手册中指定所需的SPI模式。
- 实验验证:在不确定的情况下,可以通过实验来验证哪种模式可以成功通信。
十五、描述一下中断的处理流程?
- 中断发生:外部设备或内部事件触发中断请求。
- 中断响应:CPU响应中断请求,保存当前执行上下文(如程序计数器和状态寄存器)。
- 中断向量跳转:CPU跳转到中断向量表中对应的中断服务程序(ISR)。
- 执行ISR:执行中断服务程序,处理中断事件。
- 恢复执行:ISR执行完成后,恢复保存的上下文,返回中断前的执行点。
十六、STM32的中断控制器支持多少个外部中断?
STM32的嵌套向量中断控制器(NVIC)支持最多240个外部中断源,不同的STM32型号支持的中断数量可能会有所不同。
十七、STM32有几个时钟源?
STM32微控制器通常有以下几个时钟源:
- 内部高速时钟(HSI)
- 内部低速时钟(LSI)
- 外部高速时钟(HSE)
- 外部低速时钟(LSE)
- PLL(Phase-Locked Loop)时钟
十八、RTOS的任务是怎么写的?如何切出这个任务?
编写RTOS任务的步骤
- 定义任务函数:任务由函数实现,通常包括无限循环,在其中周期性地执行任务代码。
- 创建任务:使用RTOS的API函数创建任务。这通常包括指定任务函数、任务优先级、以及可能的任务堆栈大小。
- 任务调度:RTOS的调度器负责管理多个任务的执行时间和顺序。任务可以基于优先级或轮询调度来进行切换。
-
任务函数示例
这里是一个简单的RTOS任务示例,使用FreeRTOS作为示例环境:
-
#include "FreeRTOS.h" #include "task.h"// 任务函数 void vTaskFunction(void *pvParameters) {for (;;) {// 任务实际执行的代码// 可以包括读取传感器数据、更新状态、发送消息等// 延时,让出CPUvTaskDelay(pdMS_TO_TICKS(1000));} }// 创建任务 int main(void) {xTaskCreate(vTaskFunction, // 任务函数"Example Task", // 任务名称configMINIMAL_STACK_SIZE, // 堆栈大小NULL, // 传递给任务的参数tskIDLE_PRIORITY + 1, // 任务优先级NULL // 任务句柄);// 启动调度器vTaskStartScheduler();// 如果系统正常运行,不应该到达这里for (;;); }
任务切换机制
任务的切换(Context Switching)是RTOS中的核心功能之一。当一个任务处于等待状态(例如等待时间延迟或等待资源),调度器会停止当前任务的执行,并保存其上下文(包括CPU寄存器等状态),然后加载另一个就绪任务的上下文并执行该任务。这种机制确保系统能够高效地响应实时事件。
切换触发情况:
- 时间片轮转:在固定时间片结束后切换到其他相同优先级的任务。
- 资源等待:当任务等待系统资源(如信号量、消息队列)时。
- 任务优先级:更高优先级的任务就绪时,会抢占当前低优先级任务的执行。
18.1 任务间切换
- 任务间切换:UCOS使用任务调度器来管理多个任务,每个任务有自己的优先级。当系统空闲或者当前任务主动放弃CPU执行权时,任务调度器会根据任务的优先级决定下一个要执行的任务。高优先级任务会优先执行,低优先级任务只有在没有更高优先级任务要执行时才能获得CPU执行权。
- 硬件中断:当硬件中断发生时,系统会保存当前任务相关的变量(通常是通过将这些变量入栈),然后执行中断服务程序。中断服务程序执行完成后,系统会将之前保存的任务相关变量出栈并返回到原来的任务执行点。
- 任务间切换的触发:为了确保低优先级任务有机会执行,高优先级任务在一定条件下需要放弃CPU执行权,让任务调度器选择其他任务执行。这可以通过插入等待延时、阻塞等待事件等方式来实现。
uCOS的任务调度器会根据任务的优先级和任务间的协作情况来决定任务的执行顺序,从而保证系统的稳定性和实时性。
十九、uCOS-II中任务间的通信方式有哪几种?
在uC/OS-II中,使用信号量、邮箱和消息队列这些事件来实现任务间的通信是非常常见的。这些事件可以用于实现资源共享、任务同步和消息传递等功能。
19.1 信号量
- 用途:控制共享资源的使用权,标志某事件的发生,使两个任务的行为同步。
- 应用实例:互斥信号量。初始化为1,用于保护共享资源,确保只有一个任务可以访问该资源,从而避免冲突。
19.2 邮箱(消息邮箱)
- 概念:邮箱用于在任务之间传递消息,类似于一个缓冲区,任务可以将消息放入邮箱中,其他任务则可以从邮箱中获取消息。
- 应用场景:用于存储外部事件、串口接收程序中的接收缓冲区等场景。
19.3 消息队列
- 概念:消息队列是多个邮箱的集合,任务和中断可以将消息放入队列中,任务可以按照先进先出的顺序获取消息。
- 应用场景:用于存储多个任务产生的消息,确保消息按照先进先出的顺序被处理。
这些事件在uC/OS-II中扮演着重要的角色,帮助实现任务间的通信和协作,从而构建出复杂的实时系统。通过合理地使用这些事件,可以提高系统的可靠性和实时性。
二十、uCOS-II和Linux的差异
μC/OS-II和Linux都适用于嵌入式系统,但它们有各自的特点和适用场景。
21.1 μC/OS-II
- 设计定位:专为嵌入式系统而设计,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
- 特点:最小内核可编译至2KB,适用于资源受限的嵌入式环境,可以在几乎所有知名的CPU上进行移植。
- 优势:针对嵌入式系统的需求进行了优化,运行效率更高,占用资源更少。
21.2 Linux
- 适用范围:广泛应用于服务器、嵌入式系统以及家用机等各种场景。
- 特点:免费、安全、稳定,具有开放源代码的特性,可以灵活定制和修改。
- 优势:在服务器领域有广泛的应用,如Red Hat Linux等发行版在服务器上使用广泛,具有强大的社区支持和丰富的生态系统。
μC/OS-II更适用于对执行效率和资源占用有严格要求的嵌入式系统,而Linux则更适用于需要广泛应用、灵活定制以及在服务器领域有较大市场份额的场景。
差异比较
特点 | μC/OS-II | Linux |
---|---|---|
设计定位 | 专为嵌入式系统设计 | 广泛应用于服务器、嵌入式系统等 |
内核大小 | 最小内核可编译至2KB | 内核较大,常规内核大小较大 |
运行效率 | 执行效率高,占用空间小 | 在资源充足的系统上通常具有良好的性能 |
实时性能 | 实时性能优良 | 实时性能取决于硬件和内核配置 |
可扩展性 | 可扩展性强 | 具有较好的可扩展性 |
适用场景 | 资源受限的嵌入式系统 | 服务器、嵌入式系统、家用机等 |
社区支持和生态系统 | 社区支持较小,但有专门的嵌入式社区 | 强大的社区支持和丰富的生态系统 |
二十一、uCOS-II和uCOS-III与FreeRTOS比较
21.1 uC/OS-II vs. FreeRTOS
- 外延支持:uC/OS-II具有大量外延支持,如FS、USB、GUI、CAN等,而FreeRTOS只支持TCP/IP。
- 商业应用费用:在商业上,FreeRTOS是免费应用的,而uC/OS-II在商业上的应用是需要付费的。
- 任务间通讯:FreeRTOS只支持队列、信号量、互斥量,而uC/OS-II除此外还支持事件标志组、邮箱。
- 任务管理数量:理论上讲,FreeRTOS可以管理超过64个任务,而uC/OS-II只能管理64个。
21.2 uC/OS-II vs. μC/OS-III
- 优先级管理:μC/OS-III允许几个任务使用同一个优先级,并且在同一个优先级中支持时间片调度。
- 动态配置内核资源:μC/OS-III允许在程序运行中动态配置实时操作系统内核资源,避免了编译过程中资源不够分配的问题。
- 资源复用:μC/OS-III对资源复用做了改进,不再受限于最大任务数,而是受限于RAM的可用量。
- 功能增加:μC/OS-III增加了许多功能,包括更多的任务管理、信号量、互斥型信号量、事件标志、消息队列、定时器等,这些功能在uC/OS-II中是没有的。
比较总结
特点 | uC/OS-II | FreeRTOS | μC/OS-III |
---|---|---|---|
外延支持 | 支持大量外延,如FS、USB、GUI、CAN等 | 仅支持TCP/IP | 同样支持大量外延,如FS、USB、GUI、CAN等 |
商业应用费用 | 商业上需付费 | 商业上免费应用 | 商业上需付费 |
任务间通讯 | 支持队列、信号量、互斥量、事件标志组、邮箱 | 仅支持队列、信号量、互斥量 | 支持队列、信号量、互斥量、事件标志组、邮箱 |
任务管理数量 | 最多管理64个任务 | 理论上支持超过64个任务 | 理论上支持超过64个任务 |
优先级管理 | 任务优先级不能重复,不支持时间片调度 | 支持任务共享同一优先级,支持时间片调度 | 支持任务共享同一优先级,支持时间片调度 |
动态配置内核资源 | 不支持 | 不支持 | 可在程序运行中动态配置内核资源 |
资源复用 | 有限于最大任务数 | 不受限于最大任务数 | 不再受限于最大任务数 |
功能增加 | 功能相对较少 | 功能相对较少 | 增加了许多功能 |
相关文章:
嵌入式软件stm32面试
一、STM32的内核型号有哪些? STM32系列是STMicroelectronics(意法半导体)生产的基于ARM Cortex-M内核的微控制器产品线。这些产品按照不同的内核架构和性能特点分为了主流产品、超低功耗产品和高性能产品。 1.1 主流产品 STM32F0 系列&…...

【Git】-- 添加公钥到 github 或者gitlab上
仅针对系统:mac os 、 unix、linux 1、检查是否有 id_rsa.pub $ cd ~ $ ls -al ~/.ssh 注意:若已有 id_rsa.pub,则必要执行 第二步,避免覆盖掉原有正常的公钥。 配置多个 git 账号请参考:同一台电脑配置多个git账…...
Vue页面生成PDF后调起浏览器打印
一、安装依赖 首先,需要安装 html2canvas 和 jsPDF 库。 npm install html2canvas jspdf二、创建公共方法引入 在utils文件夹下创建两个文件分别为pdfExport.js和printPDF.js,代码如下: pdfExport.js import html2canvas from html2canv…...
纯前端实现导出excel
项目背景: vue2 插件: xlsx;xlsx-style;file-saver 说明: 单独使用 xlsx插件,也可以将网页上的table导出成excel,但是导出的excel,没有样式 结合xlsx-style;file-saver&a…...
QT windows 5.12.0 安装包
这个是在线包,需要有账号的。 没有也没事,安装界面可以现场注册 百度网盘链接: 链接:https://pan.baidu.com/s/1QvXDert4b94GbUfD2f2G4g?pwd8888 提取码:8888...
改进YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制 | 附详细结构图
改进 YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制:中文详解 1. 简介 YOLOv7 是目前主流的目标检测算法之一,具有速度快、精度高的特点。但 YOLOv7 的原始模型结构中缺乏注意力机制,导致模型对全…...

windows系统停止更新办法
windows系统停止更新 双击启动下载的文件 然后再回到系统-更新这里,选择日期就行。...
数据标注概念
数据标注的步骤 数据清洗:处理数据中的噪声、缺失值和异常值,确保数据的质量和完整性。 数据转换:将数据从原始格式转换为适合机器学习模型处理的格式。 数据标注:根据应用需求,为数据添加标签或注释,标识…...

网络安全复习笔记
概述 要素 CIA:可用性;完整性;保密性。 可控性;不可否认性;可审查性。 攻击 被动:窃听 - 保密性;监听 - 保密性主动:假冒 - 完整性;重放 - 完整性;改写 -…...

Laravel - excel 导入数据
在Laravel中,可以使用maatwebsite/excel这个库来处理Excel文件的导入。 1.用命令行窗口打开项目根目录,使用 Composer 安装 maatwebsite/excel composer require maatwebsite/excel --ignore-platform-reqs 在你的config/app.php文件中注册服务提供者&…...
移动语义和完美转发
C11 引入了许多新特性,使得编写高效且现代的 C 代码变得更加容易。其中,移动语义(Move Semantics)和完美转发(Perfect Forwarding)是两个重要的特性,极大地提升了 C 的性能和灵活性。 移动语义…...

【IDEA】Spring项目build失败
通常因为环境不匹配需要在file->projectstructure里面调整一下。...
【无标题】安卓app 流量
该工具可以用于安卓app 流量,内存,cpu,fps等专项内容测试,并且有整机内存,cpu对比,还可监控手机网速,app流量,数据导出等功能,重点还是免费,毕竟PerfDog收费了…...
国产化ETL产品必备的特性(非开源包装)
ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行抽取、清洗(净化)、转换、装载、标准、集成(汇总)...... 最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。…...
flink 操作mongodb的例子
Apache Flink 是一个流处理和批处理的开源框架,它通常用于处理大量数据流。然而,Flink 本身并不直接提供对 MongoDB 的原生支持,因为 MongoDB 是一个 NoSQL 数据库,而 Flink 主要与关系型数据库(如 JDBC 连接器&#x…...

【笔记】打卡01 | 初学入门
初学入门:01-02 01 基本介绍02 快速入门库处理数据集网络构建模型训练保存模型加载模型打卡-时间 01 基本介绍 MindSpore Data(数据处理层) ModelZoo(模型库) MindSpore Science(科学计算),包含…...

Rocky9使用cockpitweb登陆时root用户无法登陆
Rocky9使用cockpitweb登陆时root用户无法登陆 [rootlvs ~]# vim /etc/cockpit/disallowed-users [rootlvs ~]# systemctl restart cockpit 取消disallowed-users中的root,即可访问 ip:9090 登陆。...
微信小程序修改标题
要修改微信小程序页面的标题和调整字体大小,你需要对 app.json 和页面对应的 json 文件进行配置。 修改页面标题 打开 app.json 文件,找到 pages 字段,确认需要修改的页面路径。打开对应页面的 .json 文件(例如,pages/…...
Linux MySQL服务设置开机自启动
文章目录 前言简介一、准备工作二、操作步骤2.1 启动MySQL服务2.2 拷贝配置2.3 赋值权限2.4 添加为系统服务2.5 验证 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容,下面案例…...

MacOS设备远程登录配置结合内网穿透实现异地ssh远程连接
文章目录 前言1. MacOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接MacOS3.1 MacOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接MacOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...