当前位置: 首页 > news >正文

STM32面试相关问题

STM32面试相关问题:

  1. STM32的内核型号,主频,传感器和单片机总线类型,IIC,SPI,RS485
  2. UART数据帧
  3. 项目中一些参数的设置

STM32   系统移植  ARM编译  常用的驱动编写方式   

自己写过哪些方面驱动  

其实如果问32的问题,他一般试看项目提问的,

1.串口

2.总线

3.中断

4.项目流程

5.保证你项目中提到的都要会

嵌入式面试知识点总结 -- STM32相关

一、MCU对比

问题:

  • 问题一:STM32F1和F4的区别?

解答:

参看:STM32开发 – STM32初识
内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核;
主频不同:F1主频72MHz,F4主频168MHz;
浮点运算:F1无浮点运算单位,F4有;
功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等;
内存大小:F1内部SRAM最大64K,F4有192K(112+64+16)。

二、STM32 启动过程

问题:

  • 问题一:介绍以下STM32启动过程?

解答:

参看:STM32开发 – 启动流程
通过Boot引脚设定,寻找初始地址
初始化栈指针 __initial_sp
指向复位程序 Reset_Hander
设置异常中断 HardFault_Handler
设置系统时钟 SystemInit
调用C库函数 _main

三、GPIO

问题:

  • 问题一:介绍以下GPIO?

解答:

参看:STM32开发 – GPIO详解
GPIO 8种工作模式(gpio_init.GPIO_Mode):
(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 复用开漏输出
(8) GPIO_Mode_AF_PP 复用推挽输出

APB2负责 AD,I/O,高级TIM,串口1。
APB1负责 DA,USB,SPI,I2C,CAN,串口2345,普通TIM,
PWR

GPIO框图剖析:
参看:STM32-GPIO详解
 

四、UART

问题:

  • 问题一:串行通信方式介绍?
    同步通信:I2C 半双工,SPI 全双工
    异步通信:RS485 半双工、RS232 全双工
  • 问题二:串口配置?
    串口设置的一般步骤可以总结为如下几个步骤:
    (1)串口时钟使能,GPIO时钟使能
    (2)串口复位
    (3)GPIO端口模式设置
    TX的GPIO工作模式为:GPIO_Mode_AF_PP;//复用推挽输出
    RX的GPIO工作模式为:GPIO_Mode_IN_FLOATING;//浮空输入

  • (4)串口参数初始化
    主要包含:波特率设置(115200)、8个数据位、1个停止位、无奇偶校验位、无硬件数据流控制、收发模式。
    (5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
    (6)使能串口
    (7)编写中断处理函数
  • 问题二:USART主要特点?
    (1)全双工操作(相互独立的接收数据和发送数据);
    (2)同步操作时,可主机时钟同步,也可从机时钟同步;
    (3)独立的高精度波特率发生器,不占用定时/计数器;
    (4)支持5、6、7、8和9位数据位,1或2位停止位的串行数据
    结构;
    (5)由硬件支持的奇偶校验位发生和检验;
    (6)数据溢出检测;
    (7)帧错误检测;
    (8)包括错误起始位的检测噪声滤波器和数字低通滤波器;
    (9)三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;
    (10)支持多机通信模式;
    (11)支持倍速异步通信模式。

解答:

参看:STM32开发 – 串口详解
应用场景:GPS、蓝牙、4G模块

五、I2C

问题:

  • 问题一:I2C 总线在传送数据过程中共有三种类型信号?
    (1)开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
    (2)结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
    (3)应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
  • 问题二:I2C配置主机模式端口该怎么配置?
    硬件模式:复用开漏输出、既不上拉也不下拉。(快速模式:400 Kbit/s)
    软件模拟:推挽输出、配置上拉电阻。
  • 问题三:I2C仲裁机制?
    参看:S5PV210开发 – I2C 你知道多少?(三)
    I2C 仲裁机制,理解了 线“与”(Wired-AND),就一目了然了。
    简单说,它遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。

解答:

参看:STM32开发 – PMIC、I2C详解
硬件模式: 是有通信速率设置的
/* STM32 I2C 快速模式 */
#define I2C_Speed 400000

/* 通信速率 */
I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;

软件模拟: 没有设置通信速率,该怎么计算呢?
通过I2C总线位延迟函数 i2c_Delay:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code class="prism language-cpp"><span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">i2c_Delay</span><span class="token punctuation">(</span><span class="token keyword">void</span><span class="token punctuation">)</span>

<span class="token punctuation">{<!-- --></span>

    <span class="token keyword">uint8_t</span> i<span class="token punctuation">;</span>

    <span class="token comment">/* 

        下面的时间是通过安富莱AX-Pro逻辑分析仪测试得到的。

        CPU主频72MHz时,在内部Flash运行, MDK工程不优化

        循环次数为10时,SCL频率 = 205KHz

        循环次数为7时,SCL频率 = 347KHz SCL高电平时间1.5usSCL低电平时间2.87us

        循环次数为5时,SCL频率 = 421KHz SCL高电平时间1.25usSCL低电平时间2.375us

         

    IAR工程编译效率高,不能设置为7

    */</span>

    <span class="token keyword">for</span> <span class="token punctuation">(</span>i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token punctuation">}</span>

</code>

应用场景:PMIC、加速度计、陀螺仪

六、SPI

问题:

  • 问题一:SPI需要几根线?
    SPI 接口一般使用 4 条线通信:
    MISO 主设备数据输入,从设备数据输出。
    MOSI 主设备数据输出,从设备数据输入。
    SCLK 时钟信号,由主设备产生。
    CS 从设备片选信号,由主设备控制。
  • 问题二:SPI通信的四种模式?
    SPI 有四种工作模式,各个工作模式的不同在于 SCLK 不同, 具体工作由 CPOL,CPHA 决定。
    (1)CPOL: (Clock Polarity),时钟极性:
    SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1:
    CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high;
    CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是所谓的active-low;

  • (2)CPHA:(Clock Phase),时钟相位:
    相位,对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,
    0对应着第一个边沿,1对应着第二个边沿。对于:
    CPHA=0,表示第一个边沿:
    对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
    对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;
    CPHA=1,表示第二个边沿:
    对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
    对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;
     
  • 问题三:该如何确定使用哪种模式?
    (1)先确认从机需求的 SCLK 极性,不工作时是在低电位还是高电位,由此确认 CPOL 为 0 或 1。
    看原理图,我们设置串行同步时钟的空闲状态为高电平所以我们选择 SPI_CPOL_High。
    也就是CPOL为1
    (2)再由slave芯片 datasheet 中的时序图确认 slave 芯片是在 SCLK 的下降沿采集数据,还是在SCLK的上升沿。
  • 翻译一下:
    W25Q32JV通过SPI兼容总线访问,包括四个信号:串行时钟(CLK),芯片选择(/CS),串行数据输入(DI)和串行数据输出(DO)。标准SPI指令使用DI输入引脚串行地将指令、地址或数据写入CLK上升沿上的设备。DO输出引脚用于从CLK下降沿上的设备读取数据或状态。支持模式0(0,0)和3(1,1)的SPI总线操作。模式0和
    模式3关注的是当SPI总线主端处于待机状态,数据没有被传输到串行Flash时CLK信号的正常状态。对于模式0,在下降和上升时,CLK信号通常是低的
    边缘/ CS。对于模式3,在/CS的下降和上升边缘上CLK信号通常是高的。
    既然串行同步时钟的空闲状态为高电平,这里我们选择第二个跳变沿,所以选择 SPI_CPHA_2Edge。
    也就是CPHA为1
    即,我们选择的是模式3(1,1)。

解答:

参看:STM32开发 – W25Q32JV SPI FlASH详解
参看:详解SPI中的极性CPOL和相位CPHA
应用场景:SPI Flash,W25Q32 存储器容量 32Mb (4M x 8),即4M byte

七、CAN

问题:

  • 问题一:CAN总结介绍一下?
    CAN控制器根据 CAN_L 和 CAN_H上 的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者比居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
  • 问题二:CAN初始化配置步骤?
    (1)配置相关引脚的复用功能,使能CAN时钟
    (2)设置CAN工作模式及波特率等(CAN初始化环回模式,波特率500Kbps )
    (3)设置滤波器
  • 问题三:CAN发送数据格式?
    CanTxMsg TxMessage;
    TxMessage.StdId=0x12; //
    标准标识符
    TxMessage.ExtId=0x12; // 设置扩展标示符
    TxMessage.IDE=CAN_Id_Standard; // 标准帧
    TxMessage.RTR=CAN_RTR_Data; // 数据帧
    TxMessage.DLC=len; // 要发送的数据长度 发送8个字节
    for(i=0;i<len;i++)
    TxMessage.Data[i]=msg[i]; //数据

解答:

参看:STM32开发 – CAN总线详解

八、DMA

问题:

  • 问题一:DMA介绍?
    直接存储器存取(DMA) 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。
  • 问题一:DMA传输模式有几种?
    DMA_Mode_Circular 循环模式
    DMA_Mode_Normal 正常缓存模式
    应用场景:GPS、蓝牙,都是用的循环采集,DMA_Mode_Circular模式。

解答:

参看:STM32开发 – DMA详解

一个比较重要的函数,获取当前剩余数据量大小,根据设置的接收buff大小减去当前剩余数据量 ,得到当前接收数据大小

九、中断

问题:

  • 问题一:描述一下中断的处理流程?
    (1)初始化中断,设置触发方式是上升沿/下降沿/双沿触发。
    (2)触发中断,进入中断服务函数
  • 问题二:STM32的中断控制器支持多少个外部中断?
    STM32的中断控制器支持19个外部中断/事件请求:
    从图上来看,GPIO 的管脚 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0 ~ 15。
    另外四个EXTI线的连接方式如下:
    ● EXTI线16连接到PVD输出
    ● EXTI线17连接到RTC闹钟事件
    ● EXTI线18连接到USB唤醒事件
    ● EXTI线19连接到以太网唤醒事件(只适用于互联型产品)
    中断服务函数列表:
    IO口外部中断在中断向量表中只分配了7个中断向量,也就是只能使用7个中断服务函数。
    EXTI0_IRQHandler
    EXTI1_IRQHandler
    EXTI2_IRQHandler
    EXTI3_IRQHandler
    EXTI4_IRQHandler
    EXTI9_5_IRQHandler
    EXTI15_10_IRQHandler

解答:

参看:STM32开发 – 外部中断详解

十、时钟系统

问题:

  • 问题一:STM32有几个时钟源?
    STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。
    ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
    ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
    ③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 
    ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
    ⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

解答:

参看:STM32开发 – 时钟系统详解

十一、UCOSII任务调度

问题:

  • 问题一:RTOS的任务是怎么写的?如何切出这个任务?

解答:

一个任务,也称作一个线程
UCOS有一个任务调度机制,根据任务的优先级进行调度
一个是硬件中断, 那么系统会将当前任务有关变量入栈,然后执行中断服务程序,执行完成后出栈返回.
另一个是任务之间的切换,使用的方法就是任务调度,每一个任务有自己的栈,顺度也是一样的入栈,然后执行另一个程序,然后出线返回。

并非是每一任务按优先级顺序轮流执行的,而是高优先级的任务独占运行,除非其主动放弃执行,否则低优先级任务不能抢占,同时高优先级可以把放出去给低优先级任务使用的CPU占用权抢回来。所以ucos的任务间要注意插入等待延时,以便ucos切出去让低优先级任务执行。

十二、UCOSII中任务间的通信

问题:

  • 问题一:UCOSII中任务间的通信方式有哪几种?

解答:

在UCOSII中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务间的通信的,还有全局变量。
信号量:
参看:ucosII 信号量使用总结(举例讲解)
信号量用于:
1.控制共享资源的使用权(满足互斥条件)
2.标志某时间的发生
3.使2个任务的行为同步

应用实例:互斥信号量
作为互斥条件,信号量初始化为1。
实现目标:调用串口发送命令,必须等待返回“OK”字符过后,才能发送下一条命令。每个任务都有可能使用到此发送函数,不能出现冲突!

邮箱(消息邮箱):

消息队列:
概念:
(1)消息队列实际上就是邮箱阵列。
(2)任务和中断都可以将一则消息放入队列中,任务可以从消息队列中获取消息。
(3)先进入队列的消息先传给任务(FIFO)。
(4)每个消息队列有一张等待消息任务的等待列表,如果消息列中没有消息,则等待消息的任务就被挂起,直到消息到来。

应用场景:
串口接收程序中的接收缓冲区。
储存外部事件。

十三、通信协议

问题:

  • 问题一:项目使用了自定义协议,是什么结构?

解答:

了解过Modbus协议。
结构为:帧头(SDTC)+帧长度+指令+流水号+数据+CRC校验。

十四、uCOSII和Linux的差异

问题:

  • 问题一:uCOSII和Linux的差异?

解答:

μC/OS-II是专门为计算机的嵌入式应用设计的,μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。
linux 免费,安全,稳定,应用范围广,在嵌入式上,服务器上,家用机,都有广泛应用。
μC/OS-II Linux 都适合用在嵌入式上。但μC/OS-II 是专为嵌入式而设计,这样的结果是,运行效率更高,占用资源更少。
linux 都可以用作服务器上,使用率高。linux 虽然不是专门针对服务器而开发,但其源码公开,完全可以修改,使得两者差异不大,最主要的发行版redhat linux 就是在服务器上用得很多的系统。

十五、Git提交代码

问题:

  • 问题一:Git提交代码过程?

解答:

1、显示工作路径下已修改的文件:

?

1

2

<code>$ git status

</code>

2、进入修改文件目录:

?

1

2

<code>$cd -

</code>

3、显示与上次提交版本文件的不同:

?

1

2

<code>$ git diff

</code>

4、把当前所有修改添加到下次提交中:

?

1

2

<code>$ git add .

</code>

5、添加相关功能说明,(第一次提交使用这个)

?

1

2

<code>$ git commit -s

</code>

其中还要注明:
Fuction: 修改代码的功能
Ticket: 对应Bug号
注意: 每一个文件夹下都要重新提一次。
6、查看提交代码

?

1

2

<code>$ tig .

</code>

7、请勿修改已发布的提交记录! (以后提交使用这个)

?

1

2

<code>$git commit --amend

</code>

命令模式下:
:x ( 写入文件并退出)
8、推送到服务器

?

1

2

<code>$ git push origin HEAD:refs/for/master

</code>

十六、ucosii和ucosiii和freeRTOS比较

问题:

  • 问题一:三者比较?

解答:

ucosii和freeRTOS比较:
(1)freeRTOS只支持TCP/IP, uCOSii则有大量外延支持,比如FS, USB, GUI, CAN等的支持。(我们用于tbox要用到CAN,所以选择uCOSii)
(2)freeRTOS 是在商业上免费应用。uCOSii在商业上的应用是要付钱的。
(3)任务间通讯freeRTOS只支持队列, 信号量, 互斥量。 uCOSii除这些外,还支持事件标志组,邮箱。
(4)理论上讲,freeRTOS 可以管理超过64个任务,而uCOSii只能管理64个。

ucosii和ucosiii比较:
那么从μC/OS-II到μC/OS-III有哪些不同的地方呢?增加了什么,我们看改动还是很大的。一个是原来只有0~63个优先级,而且优先级不能重复,现在允许几个任务使用同一个优先级,在同一个优先级里面,支持时间片调度法;第二个是允许用户在程序运行中动态配置实时操作系统内核资源,比如,任务、任务栈、信号量、事件标志组、消息队列、消息数、互斥型信号量、存储块划分和定时器,可以在程序运行中变更。这样,用户可以避免在程序编译过程中出现资源不够分配的问题。在资源复用上,也做了一些改进。μC/OS-II中,最多任务数有64个,到了版本2.82以后是256个,μC/OS-III中,用户可以由任意多的任务、任意多的信号量、互斥型信号量、事件标志、消息列表、定时器和任意分配的存储块容量,仅受限于用户CPU可以使用的RAM量。这个也是一个很大的扩展。(问:邵老师,它的这个数是启动时就固定的,还是启动后随便定?)它是配置的时候可以自由定义的,只有你的RAM足够大的话。第四点是增加了很多功能,功能总是越来越多的,大伙可以看一下的。原来这些功能在μC/OS-II里面是没有的。

相关文章:

STM32面试相关问题

STM32面试相关问题&#xff1a; STM32的内核型号&#xff0c;主频&#xff0c;传感器和单片机总线类型&#xff0c;IIC,SPI,RS485UART数据帧项目中一些参数的设置 STM32 系统移植 ARM编译 常用的驱动编写方式 自己写过哪些方面驱动 其实如果问32的问题&#xff0c…...

风行智能电视N39S、N40 强制刷机升级方法,附刷机升级数据MstarUpgrade.bin

升级步骤&#xff1a; 1、下载刷机数据&#xff0c;如是压缩包&#xff0c;需要先解压&#xff0c;然后将刷机bin格式的文件重命名为MstarUpgrade.bin 2、将此文件放到U盘根目录 &#xff08;U盘格式FAT32&#xff0c;单分区&#xff0c;建议4G的优盘刷机成功率高&#xff09;…...

【C语言】简易英语词典

文章目录 一、定义英语单词信息的结构体二、主函数功能逻辑三、查单词函数四、背单词函数五、补充 一、定义英语单词信息的结构体 添加必要的头文件、宏定义和声明&#xff0c;之后定义英语单词信息结构体。 /* 头文件和宏定义 */ #include <stdio.h> #include <std…...

【算法题】104. 二叉树的最大深度

题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,nul…...

Docker配置Portainer容器管理界面

目录 一、Portainer 简介 优点&#xff1a; 缺点&#xff1a; 二、环境配置 1. 拉取镜像 2. 创建启动容器 三、操作测试 1. 进入容器 2. 拉取镜像并部署 3. 访问测试 一、Portainer 简介 Portainer 是一个开源的轻量级容器管理界面&#xff0c;用于管理 Docker 容器…...

Linux network namespace 访问外网以及多命名空间通信(经典容器组网 veth pair + bridge 模式认知)

写在前面 整理K8s网络相关笔记博文内容涉及 Linux network namespace 访问外网方案 Demo实际上也就是 经典容器组网 veth pair bridge 模式理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已…...

网络渗透测试:Wireshark抓取qq图片

Wireshark Wireshark Downloadhttps://www.wireshark.org/download.html 简介 WireShark是非常流行的网络封包分析工具&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括&#xff1a; 1、Wireshar…...

网络协议与攻击模拟_16HTTP协议

1、HTTP协议结构 2、在Windows server去搭建web扫描器 3、分析HTTP协议流量 一、HTTP协议 1、概念 HTTP&#xff08;超文本传输协议&#xff09;用于在万维网服务器上传输超文本&#xff08;HTML&#xff09;到本地浏览器的传输协议 基于TCP/IP(HTML文件、图片、查询结构等&…...

叙事弧基础

原文&#xff1a;MasterClass. 2020. Learn About Narrative Arcs: Definition, Examples, and How to Create a Narrative Arc in Your Writing - 2021. https://www.masterclass.com/articles/what-are-the-elements-of-a-narrative-arc-and-how-do-you-create-one-in-writin…...

python从入门到精通(二十):python的exe程序打包制作

python的exe程序打包制作 python打包的概念python打包的模块导入模块安装验证基本语法命令参数文件夹模式单文件模式资源嵌入exe更改图标启动画面&#xff08;闪屏&#xff09;禁用异常提示 python打包的概念 将普通的*.py程序文件打包成exe文件。exe文件即可执行文件&#xf…...

three.js 细一万倍教程 从入门到精通(一)

目录 一、three.js开发环境搭建 1.1、使用parcel搭建开发环境 1.2、使用three.js渲染第一个场景和物体 1.3、轨道控制器查看物体 二、three.js辅助设置 2.1、添加坐标轴辅助器 2.2、设置物体移动 2.3、物体的缩放与旋转 缩放 旋转 2.4、应用requestAnimationFrame …...

电路设计(16)——纪念馆游客进出自动计数显示器proteus仿真

1.设计要求 设计、制作一个纪念馆游客进出自动计数显示器。 某县&#xff0c;有一个免费参观的“陶渊明故里纪念馆”&#xff0c;游客进出分道而行&#xff0c;如同地铁有确保单向通行的措施。在入口与出口处分别设有红外检测、声响、累加计数器装置&#xff0c;当游人进&#…...

Python数学建模之回归分析

1.基本概念及应用场景 回归分析是一种预测性的建模技术&#xff0c;数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式&#xff0c;并进行统计推断。例如&#xff0c;司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的…...

单片机学习笔记---DS18B20温度传感器

目录 DS18B20介绍 模拟温度传感器的基本结构 数字温度传感器的应用 引脚及应用电路 DS18B20的原理图 DS18B20内部结构框图 暂存器内部 单总线介绍 单总线电路规范 单总线时序结构 初始化 发送一位 发送一个字节 接收一位 接收一个字节 DS18B20操作流程 指令介…...

【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手

目录 一、开启WireShark的大门 1.1 WireShark简介 1.2 常用的Wireshark过滤方式 二、如何抓包搜索关键字 2.1 协议过滤 2.2 IP过滤 ​编辑 2.3 过滤端口 2.4 过滤MAC地址 2.5 过滤包长度 2.6 HTTP模式过滤 三、ARP协议分析 四、WireShark之ICMP协议 五、TCP三次握…...

开源免费的Linux服务器管理面板分享

开源免费的Linux服务器管理面板分享 一、1Panel1.1 1Panel 简介1.2 1Panel特点1.3 1Panel面板首页1.4 1Panel使用体验 二、webmin2.1 webmin简介2.2 webmin特点2.3 webmin首页2.4 webmin使用体验 三、Cockpit3.1 Cockpit简介3.2 Cockpit特点3.3 Cockpit首页3.4 Cockpit使用体验…...

leetcode算法-位运算

位运算&#xff0c;直接在二进制上进行的按位操作&#xff0c;位运算的种类如下&#xff1a; 1.按位异或^:异或的含义是操作的两位不同&#xff0c;则结果为1&#xff0c;相同则结果为0&#xff0c;所以两个相同的数异或&#xff0c;结果应该是0&#xff0c;3^3的结果是0,3^4的…...

「MySQL」约束

概述 分类 约束描述关键字非空约束限制该字段的数据不能为 nullNOT NULL唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE主键约束主键是一行数据的唯一标识&#xff0c;要求非空且唯一PRIMARY KEY默认约束保存数据时&#xff0c;如果未指定该字段的值&#xff0c;则采…...

C语言:详解操作符(下)

上一篇链接&#xff1a;C语言&#xff1a;详解操作符&#xff08;上&#xff09;摘要&#xff1a; 在上篇文章中&#xff0c;我们已经讲过位操作符等涉及二进制的操作符&#xff0c;这些有助于帮助我们后期理解数据如何在计算机中运算并存储&#xff0c;接下来本篇将更多的讲述…...

Vue3.0(六):VueX 4.x详解

Vuex4状态管理 什么是状态管理 在开发中&#xff0c;我们的应用程序需要处理各种各样的数据&#xff0c;这些数据需要保存在应用程序的某一个位置&#xff0c;对于这些数据的管理&#xff0c;就是 状态管理目前前端项目越来越复杂&#xff0c;多组件共享同一数据的状态很常见…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...