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

STM32单片机入门学习——第5节: [3-1]GPIO输出

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!

本文写于:2025.04.01

STM32开发板学习——第5节: [3-1]GPIO输出

  • 前言
  • 开发板说明
  • 引用
  • 解答和科普
  • 一、GPIO输出
  • 二、外部电路介绍
  • 问题
  • 总结

前言

   本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
   欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
   在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
   另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!

开发板说明

   本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
   原理图如下
1、开发板原理图
在这里插入图片描述
2、STM32F103C6和51对比
在这里插入图片描述
3、STM32F103C6核心板
在这里插入图片描述

视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。

下图是实物图
在这里插入图片描述

引用

【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
在这里插入图片描述
数据手册

解答和科普

第一部分主要学习GPIO的输出,第二部分主要学习GPIO的输入
C语言的知识:结构体、指针、枚举
对MOS管的理解
MOS管的管脚有三个:源极S(source)、栅极G(Gate)和漏极(Drain),但是实际工程应用中,经常无法区分PMOS管和NMOS管、各管脚的位置以及它们各自导通的条件。

MOS管有两种:一个是PMOS管,一个是NMOS管;PMOS管就是positive管,是积极的管,而NMOS管是negative管,是消极的管。积极的管就是顺应潮流,顺势而为;消极的管就是违背趋势,逆流而上。
很显然,电流从源极(输入端)到漏极(输出端),那就是顺势而为,因为源极就是源头嘛,因此这种管就是PMOS管;而电流要是从漏极(输入端)到源极(输出端),那就是逆流而上,是NMOS管。

N沟道还是P沟道与寄生二极管方向如何判定

N沟道MOS还是P沟道MOS:
箭头指向G极的是N沟道
箭头背向G极的是P沟道

寄生二极管方向:
不论N沟道还是P沟道MOS管,中间衬底箭头方向和寄生二极管的箭头方向总是一致的:
要么都由S指向D,要么都有D指向S

MOS管的连接方式
MOS管应用电压的极性和我们普通的晶体三极管相同,N沟道的类似NPN晶体三极管,漏极D接正极,源极S接负极,栅极G正电压时导电沟道建立,N沟道MOS管开始工作。
同样P道的类似PNP晶体三极管,漏极D接负极,源极S接正极,栅极G负电压时,导电沟道建立,P沟道MOS管开始工作。

导通特性
NMOS是栅极高电平(|VGS| > Vt)导通,低电平断开,可用来控制与地之间的导通。
PMOS是栅极低电平(|VGS| > Vt)导通,高电平断开,可用来控制与电源之间的导通。
NMOS的特性,Vgs大于一定的值就会导通,适合用于源极接地时的情况(低端驱动),只要栅极电压达到4V或10V就可以了。
PMOS的特性,Vgs小于一定的值就会导通,适合用于源极接VCC时的情况(高端驱动)。但是,虽然PMOS可以很方便地用作高端驱动,但由于导通电阻大,价格贵,替换种类少等原因,在高端驱动中,通常还是使用NMOS。

MOS开关管损失
不管是NMOS还是PMOS,导通后都有导通电阻存在,这样电流就会在这个电阻上消耗能量,这部分消耗的能量叫做导通损耗。选择导通电阻小的MOS管会减小导通损耗。现在的小功率MOS管导通电阻一般在几十毫欧左右,几毫欧的也有。

MOS在导通和截止的时候,一定不是在瞬间完成的。MOS两端的电压有一个下降的过程,流过的电流有一个上升的过程,在这段时间内,MOS管的损失是电压和电流的乘积,叫做开关损失。通常开关损失比导通损失大得多,而且开关频率越高,损失也越大。
导通瞬间电压和电流的乘积很大,造成的损失也就很大。缩短开关时间,可以减小每次导通时的损失;降低开关频率,可以减小单位时间内的开关次数。这两种办法都可以减小开关损失。

MOS管驱动
跟双极性晶体管相比,一般认为使MOS管导通不需要电流,只要GS电压高于一定的值,就可以了。这个很容易做到,但是,我们还需要速度。
在MOS管的结构中可以看到,在GS,GD之间存在寄生电容,而MOS管的驱动,实际上就是对电容的充放电。如果有兴趣,可以在mos的G级串一个电流表,看电流的变化。对电容的充电需要一个电流,因为对电容充电瞬间可以把电容看成短路,所以瞬间电流会比较大。选择/设计MOS管驱动时第一要注意的是可提供瞬间短路电流的大小。
第二注意的是,普遍用于高端驱动的NMOS,导通时需要是栅极电压大于源极电压。而高端驱动的MOS管导通时源极电压与漏极电压(VCC)相同,所以这时栅极电压要比VCC大4V或10V。如果在同一个系统里,要得到比VCC大的电压,就要专门的升压电路了。很多马达驱动器都集成了电荷泵,要注意的是应该选择合适的外接电容,以得到足够的短路电流去驱动MOS管。

记忆技巧:
1.交叉的线最多的是源极;
2.栅极也就是门(gate),既然是门,就具有控制的职能。
3.无论是PMOS管还是NMOS管,二极管的方向正好与输入输出的方向是相反的
4.无论是PMOS管还是NMOS管,栅源极箭头的方向正好与二极管的方向相同
5.无论是PMOS管还是NMOS管,我们只需要比较G极电压与S极电压大小关系就可以判断MOS管能不能导通
6.对于PMOS管来说,电流是从源极(输入端)到漏极(输出端),从上到下,各节点电平应该是依次变小的,因此栅极G的电压必须小于源极电压;换句话说,当UGS<0时,PMOS管才导通。
7.对于NMOS管来说,电流是从漏极(输入端)到源极(输出端),从下到上,各节点电平应该是依次变小的,因此栅极G的电压必须大于源极电压;换句话说,当UGS>0时,NMOS管才导通。
引用

原文链接:

一、GPIO输出

在这里插入图片描述
在这里插入图片描述
STM32是32位的单片机,所以STM32内部的寄存器都是32位的,但是端口只有16位,所以这个寄存器只有低16位对应的有端口,高16位没有用到。
在这里插入图片描述

1、VDD 3.3V,VSS地,保护二极管,可以保护电路。
2、上拉电阻至VDD,下拉电阻至VSS,这个开关是可以通过程序进行配置的,上拉输入模式:上面导通,下面关断;下拉输入模式:上面断开,下面导通;两个都断开就浮空输入模式。为了给输入提供一个默认的输入电平的。
如果什么都不接,这时输入就会处于一种浮空的状态,引脚的输入电平极易受外界干扰而改变,受到一点扰动就会变化,为了避免引脚悬空导致的输入数据不确定,我们就需要在这里加上上拉或者下拉电阻了,如果接入上拉电阻,当引脚悬空时,还有上拉电阻来保证引脚的高电平,所以上拉输入又可以称作默认高电平的输入模式,下拉也是同理,就是默认低电平的输入方式。

上面导通,下面断开,就是上拉输入模式;
下面导通,上面断开,就是下拉输入模式;
两个都断开,就是浮空输入模式;
这个是为了给输入提供一个默认的输入电平的,因为对于一个数字的端口,输入不是高电平就是低电平,那如果输入引脚什么也不接,那到底是高电平还是低电平呢?
这是输入就会处于一种浮空的状态,引脚的输入电平极易受到外界干扰而改变,它的位置是不确定的,收到一点扰动就会变化,为了避免引脚悬空导致的输入数据不确定,我们就需要在这里加上上拉或者下拉电阻了。
如果接入上拉电阻,当引脚悬空时,还有上拉电阻来保证引脚的高电平,所以上拉电阻输入又可以称作是默认为高电平的输入模式。
下拉也是同理,就是默认为低电平的输入方式。
电阻都较大,是一种弱上拉合弱下拉,目的是尽量不影响正常的输入操作。
3、施密特触发器:就是对输入电压进行整形的,它的执行逻辑是,如果输入电压大于某一阈值,输出就会瞬间升为高电平,如果输入电压小于某一阈值,输出就会瞬间降为低电平。
施密特触发器:执行逻辑是,如果输入电压大于某一阀值,输出就会瞬间升为高电平,如果输入电压小于某一阀值,输出就会瞬间降为低电平。
如果没有施密特触发器,那很有可能因为干扰导致误判
在这里插入图片描述
所以输出仍然是稳定的。直到下次阈值上限。输出才会变成高。阈值之间有距离,可以有效地避兔因信号波动造成的输出抖动现象。

4、其中有模拟输入。这个是连接到ADC上的。因为AD(需要接收模拟量),所以这根线是接到施密特触发器前面的。

5、另一个是复用功能输入。这个是莲接到其他需要读取端口的外设上的,比如串口的输入引脚等。这根线接收的是数字量,所以在施密特触发器后面。
7、输出部分
数字部分可以由输出数据寄存器或片上外设控制,两种控制方式通过这个数据选择器接到了输出控制部分,如果选择通过输出数据寄存器进行控制,就是普通的IO口输出,写这个数据寄存器的某一位就可以操作对应的某个端口了。
左边还有一个位设置/清除寄存器,这个可以用来单独操作输出数据寄存器的某一位,而不影响其他位。因为这个输出数据寄存器同时控制16个端口,并且这个寄存器只能整体读写,所以如果想单独控制其中某一个端口而不影响其它端口的话,就需要一些特殊的操作方式,第一种方武是先读出这个寄存器。然后用按位与和按位或的方式更改某位,最后再将更改后的数据写回去。在C语言中就是&=和|=的操作。
第二种方式是通过设置这个位设置和位清除寄存器, 自动将输出数据寄存器中对应位置为1。而剩下写0的位则保持不变。
如果想对某一应进行清0的操作。就在位清除寄存器的对应位写1即可。
第三种方式是:就是读写STM32中的 “位带”区域,51的位寻址,在STM32中。专门分配的有一段地址区域。这段地址映射了RAM和外设寄存器所有的位,读与这段地址中的数据。就相当于读写所映射位置的某─位。
本次主要是第二种。

8、两个MOS管:
我们的信号来控制开关的导通和关闭,开关负责将IO口接到VDD或者VSS.在这里可以选择推挽、开漏或关闭三种输入方式。
推挽输出
在推挽输出模式下,P-MOS和N-MOS均有效,
数据寄存器为1时,上管导通,下管关断,输出直接接到VDD,就是输出高电平
数据寄存器为1时,上管关断,下管导通,输出直接接到VDD,就是输出高电平
这种模武下。高低电平均有较强的驱动能力。所以推挽输出模式也可叫强推输出模武
在推挽输出模式下。STM32对IO口具有绝对的控制权。高低电平都由STM32说的算。
在这里插入图片描述
开漏输出
在开漏输出模式下,这个P-MOS使无效的,只有N-MOS在工作。
数据寄存器为1时。下管断开。这时输出相当于断开。也就是高阻模式
数据寄存器为0时。下管导通,输出直接接到VSS。也就是输出低电平,这种模式下,只有低电平有驱动能力,高电平是没有驱动能力的。这个模式有什么用呢,这个开漏模式可以作为通信协议的驱动模式。比如I2C通信的引脚,就是使用的开漏模式。在多级通信的情况下,这个模式可以避免各个设备的互相干扰。另外开漏模式还可以又来输出5V的电平信号。比如在IO口外界一个上拉电阻到5V的电源。,当输出低电平时,有内部的N-MOS直接接到VSS.当输出高电平时,由外部的上拉电阻拉高至5V.这样就可以输出5V的电平信号,用于兼容一些5V电平的设备。这就是开漏输出的主要用途。

在这里插入图片描述

关闭;设置为输入模式是,两个管都无效,也就是输出关闭,端口的电平由外部信号来控制。
在这里插入图片描述

在输入模式时,施密特触发器打开,输出被禁止,可通过输入数据寄存器GPIOx_IDR读取IO状态。其中输人模式,可设置为上拉、下拉、浮空和模拟输入四种。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。浮空输入的电平是不确定的,完全由外部的输人决定,一般接按键的时候用的是这个模式。模拟输入则用于ADC采集。

在这里插入图片描述
在输入模式下,输出驱动器是断开的,端口只能输入不能输出。这是因为一个端口只能有一个输出,但可以有多个输入。
在这里插入图片描述
这里输出是断开的,输入的施密特触发器也是关闭的无效状态,所以这些整个的GPIO都是没用的,只剩下模拟输入这条线,在施密特触发器前,所以当我们使用ADC的时候将引脚配置为模拟输出就行了,其他时候用不到。

在这里插入图片描述

如何P-MOS如果无效,就是开漏输出,如果P-MOS和N-MOS都有效,就是推挽输出
另外我们还可看到。在输出模式下。输入模式也是有效的。
在输入模式下,输出都是无效的。这是因为一个端口只能有一个输出,但可以有多个输入。除了模拟输入这个模式会关闭数字的输入功能,其他的7个模式,所有的输入都是有效的。

在这里插入图片描述

在这里插入图片描述
复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器GPIOx_ODR无效;输入可用,通过输入数据寄存器可获取IO实际状态,但一般直接用外设的寄存器来获取该数据信号。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、外部电路介绍

在这里插入图片描述

在这里插入图片描述
在单片机,都使用了高电平弱驱动,低电平的强驱动的规则,可以避免高低电平打架。
在这里插入图片描述
PNP 左边是基极,带箭头的是发射极,剩下的是集电极,基极给低电平,三极管就会导通。
另外注意一下。这个PNP的极管最好接在上边,NPN的三极管最好接在下。
这是因为三极管的通断。是需要发射极和基极直接产生一定的开启电压的。
如果你把负载接在发射极这边。可能会导致三极管不能开启。
在这里插入图片描述

问题

1、有那么一瞬间想学习模电。
2、挺复杂的。

总结

本节课主要学习了STM32的输出模式,学习了GPIO的结构,1保护二极管,2、PMOS和NMOS管,3、输出数据寄存器 4、复用功能输出 5、输入数据寄存器6、复用功能输入 7、模拟输入输出。还有GPIO的工作模式,输入模式(上拉/下拉/浮空/模拟),输出模式(推挽(常用:高电平和低电平都有较强的驱动能力)/开漏(线与上方MOS管不工作)),复用功能(推挽/开漏)。还有我们常用的电路硬件基础

相关文章:

STM32单片机入门学习——第5节: [3-1]GPIO输出

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.01 STM32开发板学习——第5节&#xff1a; [3-1]GPIO输出 前言开发板说明引用解答和…...

Open GL ES ->模型矩阵、视图矩阵、投影矩阵等变换矩阵数学推导以及方法接口说明

Open GL ES 变换矩阵详解 一、坐标空间变换流程 局部空间 ->Model Matrix(模型矩阵)-> 世界空间 世界空间->View Matrix(视图矩阵)->观察空间 观察空间 ->Projection Matrix(投影矩阵)->裁剪空间 裁剪空间 ->ViewPort Transform(视口变换)>屏幕空间 …...

AI提示词:自然景区智能客服

提示描述 专为自然景区游客设计的智能客服系统&#xff0c;旨在通过人工智能技术提供实时、准确的景区信息、游览建议、安全提示和服务支持&#xff0c;提升游客的体验质量和满意度。 提示词 # Role: 自然景区智能客服## Profile: - Author: xxx - Version: 1.0 - Language: …...

c#的反射和特性

在 C# 中&#xff0c;反射&#xff08;Reflection&#xff09;和特性&#xff08;Attributes&#xff09;是两个强大的功能&#xff0c;它们在运行时提供元编程能力&#xff0c;广泛用于框架开发、对象映射和动态行为扩展。以下是对它们的详细介绍&#xff0c;包括定义、用法、…...

智能体项目实现AI对话流式返回效果

1、智能体项目里与AI大模型对话的时候&#xff0c;需要从后端的流式接口里取数据并实现打字机渲染效果。这里涉及到 Markdown 格式的渲染&#xff0c;所以需要配合 marked.js 实现&#xff0c;安装 marked.js &#xff1a; npm install marked 引用&#xff1a; import { ma…...

定时任务(python)

介绍 &#x1f9e9; 什么是“定时任务”&#xff1f; 定时任务&#xff0c;就是按照设定的时间间隔或时间点自动执行某些操作。比如&#xff1a; • 每天早上8点发通知 • 每隔10秒采集一次数据 • 每小时清理一次缓存相关使用 ✅ 最简单的方式&#xff1a;while True tim…...

Python学习第二十七天

yield关键字 yield关键字扮演着核心角色&#xff0c;主要用于处理异步数据流和请求调度。 主要作用 生成器函数&#xff1a;将方法转换为生成器&#xff0c;可以逐步产生结果而不需要一次性返回所有数据 异步处理&#xff1a;支持Scrapy的异步架构&#xff0c;提高爬取效率 …...

Docker Compose 启动jar包项目

参考文章安装Docker和Docker Compose 点击跳转 配置 创建一个文件夹存放项目例如mydata mkdir /mydata上传jar包 假设我的jar包名称为goudan.jar 编写dockerfile文件 vim app-dockerfile按键盘上的i进行编辑 # 使用jdk8 FROM openjdk:8-jre# 设置时区 上海 ENV TZAsia/Sh…...

pytorch中dataloader自定义数据集

前言 在深度学习中我们需要使用自己的数据集做训练&#xff0c;因此需要将自定义的数据和标签加载到pytorch里面的dataloader里&#xff0c;也就是自实现一个dataloader。 数据集处理 以花卉识别项目为例&#xff0c;我们分别做出图片的训练集和测试集&#xff0c;训练集的标…...

SQL Server:触发器

在 SQL Server Management Studio (SSMS) 中查看数据库触发器的方法如下&#xff1a; 方法一&#xff1a;通过对象资源管理器 连接到 SQL Server 打开 SSMS&#xff0c;连接到目标数据库所在的服务器。 定位到数据库 在左侧的 对象资源管理器 中&#xff0c;展开目标数据库&a…...

标题:利用 Rork 打造定制旅游计划应用程序:一步到位的指南

引言&#xff1a; 在数字化时代&#xff0c;旅游计划应用程序已经成为旅行者不可或缺的工具。但开发一个定制的旅游应用可能需要耗费大量时间与精力。好消息是&#xff0c;Rork 提供了一种快捷且智能的解决方案&#xff0c;让你能轻松实现创意。以下是使用 Rork 创建一个定制旅…...

WebSocket原理详解(二)

WebSocket原理详解(一)-CSDN博客 目录 1.WebSocket协议的帧数据详解 1.1.帧结构 1.2.生成数据帧 2.WebSocket协议控制帧结构详解 2.1.关闭帧 2.2.ping帧 2.3.pong帧 3.WebSocket心跳机制 1.WebSocket协议的帧数据详解 1.1.帧结构 WebSocket客户端与服务器通信的最小单…...

计算声音信号波形的谐波

计算声音信号波形的谐波 1、效果 2、定义 在振动分析中,谐波通常指的是信号中频率是基频整数倍的成分。基频是振动的主要频率,而谐波可能由机械系统中的非线性因素引起。 3、流程 1. 信号生成:生成或加载振动信号数据(模拟或实际数据)。 2. 预处理:预处理数据,如去噪…...

RepoReporter 仿照`TortoiseSVN`项目监视器,能够同时支持SVN和Git仓库

RepoReporter 项目地址 RepoReporter 一个仓库监视器&#xff0c;仿照TortoiseSVN项目监视器&#xff0c;能够同时支持SVN和Git仓库。 工作和学习会用到很多的仓库&#xff0c;每天都要花费大量的时间在频繁切换文件夹来查看日志上。 Git 的 GUI 工具琳琅满目&#xff0c;Git…...

C++多线程的性能优化

高效线程池设计与工作窃取算法实现解析 1. 引言 现代多核处理器环境下&#xff0c;线程池技术是提高程序并发性能的重要手段。本文解析一个采用工作窃取(Work Stealing)算法的高效线程池实现&#xff0c;通过详细代码分析和性能测试展示其优势。 2. 线程池核心设计 2.1 类结…...

【TS学习】(19)TS中的类

在 TypeScript 中&#xff0c;类&#xff08;Class&#xff09; 是面向对象编程的核心结构&#xff0c;用于封装数据和行为。TypeScript 的类继承了 JavaScript 的类特性&#xff0c;并增加了类型系统和高级功能的支持&#xff08;如访问修饰符、存取器和装饰器&#xff09;。 …...

UI设计系统:如何构建一套高效的设计规范?

UI设计系统&#xff1a;如何构建一套高效的设计规范&#xff1f; 1. 色彩系统的建立与应用 色彩系统是设计系统的基础之一&#xff0c;它不仅影响界面的整体美感&#xff0c;还对用户体验有着深远的影响。首先&#xff0c;设计师需要定义主色调、辅助色和强调色&#xff0c;并…...

深度学习--softmax回归

回归可以用于预测多少的问题&#xff0c;预测房屋出售价格&#xff0c;棒球队可能获胜的的常数或者患者住院的天数。 事实上&#xff0c;我们也对分类问题感兴趣&#xff0c;不是问 多少&#xff0c;而是问哪一个 1 某个电子邮件是否属于垃圾邮件 2 某个用户可能注册还是不注册…...

【计算机网络】记录一次校园网无法上网的解决方法

问题现象 环境&#xff1a;实训室教室内时间&#xff1a;近期突然出现 &#xff08;推测是学校在施工&#xff0c;部分设备可能出现问题&#xff09;症状&#xff1a; 连接校园网 SWXY-WIFI 后&#xff1a; 连接速度极慢偶发无 IP 分配&#xff08;DHCP 失败&#xff09;即使分…...

Java关于抽象类和抽象方法

引入抽象&#xff1a; 在之前把不同类中的共有成员变量和成员方法提取到父类中叫做继承。然后对于成员方法在不同子类中有不同的内容&#xff0c;对这些方法重新书写叫做重写&#xff1b;不过如果有的子类没有用继承的方法&#xff0c;用别的名字对这个方法命名的话&#xff0…...

第二十一章:Python-Plotly库实现数据动态可视化

Plotly是一个强大的Python可视化库&#xff0c;支持创建高质量的静态、动态和交互式图表。它特别擅长于绘制三维图形&#xff0c;能够直观地展示复杂的数据关系。本文将介绍如何使用Plotly库实现函数的二维和三维可视化&#xff0c;并提供一些优美的三维函数示例。资源绑定附上…...

LeetCode 热题 100_打家劫舍(83_198_中等_C++)(动态规划)

LeetCode 热题 100_打家劫舍&#xff08;83_198&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;动态规划&#xff08;一维dp数组&#xff09;&#xff09;&#xff1a;思路二&#xff08;动态规划&#xff…...

C语言复习--assert断言

assert.h 头⽂件定义了宏 assert() &#xff0c;⽤于在运⾏时确保程序符合指定条件&#xff0c;如果不符合&#xff0c;就报错终止运行。这个宏常常被称为“断⾔”。 assert(p ! NULL); 代码在程序运⾏到这⼀⾏语句时&#xff0c;验证变量 p 是否等于 NULL 。如果确实不等于 NU…...

嵌入式软件设计规范框架(MISRA-C 2012增强版)

以下是一份基于MISRA-C的嵌入式软件设计规范&#xff08;完整技术文档框架&#xff09;&#xff0c;包含编码规范、安全设计原则和工程实践要求&#xff1a; 嵌入式软件设计规范&#xff08;MISRA-C 2012增强版&#xff09; 一、编码基础规范 1.1 文件组织 头文件保护 /* 示…...

系统思考反馈

最近交付的都是一些持续性的项目&#xff0c;越来越感觉到&#xff0c;系统思考和第五项修炼不只是简单的一门课程&#xff0c;它们能真正融入到我们的日常工作和业务中&#xff0c;帮助我们用更清晰的思维方式解决复杂问题&#xff0c;推动团队协作&#xff0c;激发创新。 特…...

【C++】vector常用方法总结

&#x1f4dd;前言&#xff1a; 在C中string常用方法总结中我们讲述了string的常见用法&#xff0c;vector中许多接口与string类似&#xff0c;作者水平有限&#xff0c;所以这篇文章我们主要通过读vector官方文档的方式来学习vector中一些较为常见的重要用法。 &#x1f3ac;个…...

Burpsuite 伪造 IP

可以用于绕过 IP 封禁检测&#xff0c;用来暴力、绕过配额限制。 也可以用来做 ff98sha 出的校赛题&#xff0c;要求用 129 个 /8 网段的 IP 地址访问同一个 domain 插件 - IPRotate 原理&#xff1a;利用云服务商的反向代理服务。把反向代理的域名指向到目标 ip 即可。 http…...

12.小节

1.认识 QLabel 类,能够在界面上显示字符串. 通过 setText 来设置的.参数 QString (Qt 中把 C 里的很多容器类, 进行了重新封装.历史原因&#xff09; c叫法容器类&#xff0c;java叫法集合类 2.内存泄露&#xff0c;文件资源泄露 3.对象树。Qt 中通过对象树,来统一的释放界面的…...

大模型专题10 —LangGraph高级教程:构建支持网页搜索+人工干预的可追溯对话系统

在本教程中,我们将使用 LangGraph 构建一个支持聊天机器人,该机器人能够: ✅ 通过搜索网络回答常见问题 ✅ 在多次调用之间保持对话状态 ✅ 将复杂查询路由给人工进行审核 ✅ 使用自定义状态来控制其行为 ✅ 进行回溯并探索替代的对话路径 我们将从一个基础的聊天机器人开…...

2025年数智化电商产业带发展研究报告260+份汇总解读|附PDF下载

原文链接&#xff1a;https://tecdat.cn/?p41286 在数字技术与实体经济深度融合的当下&#xff0c;数智化产业带正成为经济发展的关键引擎。 从云南鲜花产业带的直播热销到深圳3C数码的智能转型&#xff0c;数智化正重塑产业格局。2023年数字经济规模突破53.9万亿元&#xff…...