STM32 ADC模数转换器
一、ADC简介
- ADC(Analog-Digital Converter)模拟-数字转换器
- ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
- 12位逐次逼近型ADC,1us转换时间 输入电压范围:0~3.3V,转换结果范围:0~4095
- 18个输入通道,可测量16个外部和2个内部信号源
- 规则组和注入组两个转换单元
- 模拟看门狗自动监测输入电压范围
- STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道
二、ADC基本框图
三、基本结构
四、输入通道查看
五、触发模式
六、数据对齐,校准
<.对齐
由于ADC是12位的,但是数据寄存器是16位的,所以就需要数据对齐。一般选择右对齐从低到高
<.校准
- ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差
- 建议在每次上电后执行一次校准
- 启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期
校准过程是固定的配置几条代码
七、代码部分
void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);//配置ADCCLK分频器void ADC_DeInit(ADC_TypeDef* ADCx);//恢复缺损配置
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);//初始化
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);//结构体初始化void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);//adc上电
void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);//开启DMA输出信号
void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);
//中断输出控制,控制某个中断能不能通往NVIC(基本结构里的中断输出控制)/**************控制校准函数*******************/
void ADC_ResetCalibration(ADC_TypeDef* ADCx);//复位校准
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);//获取复位校准状态
void ADC_StartCalibration(ADC_TypeDef* ADCx);//开始校准
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);//获取开始校准状态//ADC软件开始转换控制,用于软件触发的函数(基本结构里的触发控制)
void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);//获取ADC软件开始状态,没啥用//配置间断模式
void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);//每隔几个通道间断一次
void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);//是否启用间断模式
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
//ADC规则组通道配置,给16个序列填写指定的通道(1:ADCX,2:指定的通道,3:序列几的位置,4:指定通道的采样时间)//外部触发转换控制,是否允许外部触发转换
void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);//ADC获取转换值
uint32_t ADC_GetDualModeConversionValue(void);//获取双模式转换值//******************对于注入组的配置****************//void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);
void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset);
uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);
//*************************************************************************************////***********************对于模拟看门狗配置*************************//
void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);//是否启动看门狗
void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);//配置高低阈值
void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);//配置看门的通道
void ADC_TempSensorVrefintCmd(FunctionalState NewState);//ADC温度传感器、内部参考电压控制,开启内部的两个通道
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
//获取标志位状态,参数给EOC的标志位,就可以判断EOC是不是置1了(判断转换是否结束)void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);//清除标志位
ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT);//获取中断状态
void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT);//清除中断挂起位
整体配置代码:
#include "stm32f10x.h" // Device headervoid AD_init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6); GPIO_InitTypeDef GPIO_InitStruct; //第一个是结构体类型,后面是它的名字GPIO_InitStruct.GPIO_Mode= GPIO_Mode_AIN; //模式为模拟输入GPIO_InitStruct.GPIO_Pin= GPIO_Pin_0; //开启所有端口 GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz; //选择50mhzGPIO_Init(GPIOA, &GPIO_InitStruct);//配置序列里的通道((1:ADCX,2:指定的通道,3:序列几的位置,4:指定通道的采样时间))ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);ADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//ADC转换模式,这里选择独立模式,ADC1和ADC2各自转换ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//左对齐还是右对齐ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//外部触发转换选择,触发控制的触发源选择,这里的参数是外部触发none,也就是不使用外部触发,使用内部触发ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//连续转换模式,非扫描模式ADC_InitStruct.ADC_ScanConvMode = DISABLE; //扫描转换模式,单次转换ADC_InitStruct.ADC_NbrOfChannel = 1; //通道数目,ADC_Init(ADC1,&ADC_InitStruct);//中断和看门狗如果有需要可以在下面配置////*******************//ADC_Cmd(ADC1,ENABLE);//***********对ADC进行校准*****************//ADC_ResetCalibration(ADC1);//复位校准while (ADC_GetResetCalibrationStatus(ADC1) == SET);//返回复位校准的状态,一直循环等它硬件清0.说明复位校准完成ADC_StartCalibration(ADC1);//启动校准,内部电路自动进行校准while (ADC_GetCalibrationStatus(ADC1) == SET);//获取校准状态,等待校准是否完成// ADC_SoftwareStartConvCmd(ADC1,ENABLE); //软件触发转换的函数,ADC开始转换。
}//*****************启动转换,获取结果*****************//uint16_t AD_GetValue(void)
{ADC_SoftwareStartConvCmd(ADC1,ENABLE); //软件触发转换的函数,ADC开始转换。while (ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);//获取标志位状态的函数,当EOC标志位等于0时,转换未完成。return ADC_GetConversionValue(ADC1);//ADC获取转换值}/*注:如果想使用连续转换函数,则24行使用enable。软件触发放在上面init就行了。并且获取函数使用下面的uint16_t AD_GetValue(void)
{// while (ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);//获取标志位状态的函数,当EOC标志位等于0时,转换未完成。直接return就行了,不需要一直获取是否转换结束,因为连续转换是一直在进行的。return ADC_GetConversionValue(ADC1);//ADC获取转换值}
主程序代码:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "AD.h"uint16_t ADValue;
float Voltage;int main(void)
{OLED_Init();AD_init();OLED_ShowString(1,1,"ADValue:");OLED_ShowString(2,1,"VOlatge:0.00V");while(1){ADValue = AD_GetValue();Voltage = (float )ADValue / 4095 * 3.3;OLED_ShowNum(1,9,ADValue,4);OLED_ShowNum(2,9,Voltage,1);OLED_ShowNum(2,11,(uint16_t)(Voltage*100)%100,2);Delay_ms(100);}}
相关文章:
STM32 ADC模数转换器
一、ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间 输入电压范围:0~3.3V&#x…...
World of Warcraft [CLASSIC] Hunter[Grandel] R12
World of Warcraft [CLASSIC] Hunter[Grandel] R12 R13,[Freeblue] 可惜当时没有截图,唉,没有纪念 --- 挂机脚本...
kalibr:相机模型
文章目录 📚简介Kalibr标定支持的相机模型及适用场景📌 针孔相机模型(Pinhole)🌐 全向相机模型(Omnidirectional)🔍 特殊模型💡 选型建议⚠️ 注意事项📚简介 Kalibr作为多传感器标定的重要工具,支持多种相机模型以适应不同光学特性的视觉传感器。其核心相机…...
【AI News | 20250428】每日AI进展
AI Repos 1、dyad Dyad 是一款免费开源的本地化 AI 应用开发工具,兼容 Windows 和 Mac 双平台。支持使用自有 API 密钥灵活调用主流 AI 模型(包括 Gemini、GPT-4.1、Claude 等),内置数据库与身份验证系统可快速构建完整应用。 …...
DNS区域的类型
在BIND9中,type 用于定义DNS区域的类型,不同的类型决定了BIND如何处理该区域的DNS数据。以下是主要的类型及其作用详解: 1. master(主区域) 作用: 表示该区域是权威DNS服务器的主副本,负责存储…...
HTTP vs HTTPS:传输协议的安全演进与核心差异
HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)作为两种最常用的协议,其安全性和实现方式直接关系到用户隐私和数据完整性。 目录 一、HTTP与HTTPS的基础概念 二、HTTP与HTTPS的核心差异 …...
Android平台Unity引擎的Mono JIT机制分析
一、分析背景 Unity引擎开发游戏采用了C#语言,Unity采用了Mono的Jit机制实现C#逻辑代码动态编译和执行,Mono属于开源的工程,可通过查看Mono源码了解其中的处理。本文针对Mono的Jit动态编译和执行的机制进行分析,更好的了解Unity引擎在Android平台所采用的处理方式。 二、M…...
【java】接口
一、定义 1.接口中所有方法都是抽象方法和公共方法(可以省略 abstract、public),不可以有正常的方法,所有变量都是全局静态常量 2.能继承接口的只能是接口 3.接口和类的关系通过实现(重写(实现)…...
Vuex(二) —— 用Vuex完成购物车案例
目录 需求需求分析 组件分析组件通信 开发 准备环境准备模块结构商品列表组件 展示商品列表添加购物车 我的购物车组件 购物车列表商品数量和统计功能删除购物车商品 购物车列表组件 购物车列表全选操作数字加减并统计小计删除功能统计总数量和总钱数处理金额小数的问题 本地存…...
数字孪生的浪潮:从虚拟镜像到现实世界的 IT 变革
文章目录 数字孪生的本质:物理与虚拟的实时镜像数字孪生的演进:从工业试验到全行业热潮核心技术:数字孪生的基石与工具链物联网(IoT):数据采集云计算与大数据:模型存储AI 与机器学习:…...
Web开发之三层架构
实例: 分层解耦 耦合:衡量软件中各个层/各个模块的依赖关联程度。 内聚:软件中各个功能模块内部的功能联系。 软件设计原则:高内聚低耦合 控制反转:Inversion 0f Control,简称IQC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为…...
社交电商和泛娱乐平台出海南美市场支付方式与策略
随着中国社交电商和泛娱乐平台加速全球化布局,南美市场凭借庞大的人口基数、快速增长的互联网渗透率和活跃的社交媒体使用率,成为出海企业的重要战略要地。然而,这片"新蓝海"的支付生态复杂多元,信用卡欺诈率高企,现金支付仍占主导,不同国家支付偏好差异显著。…...
Miniconda Windows10版本下载和安装
Miniconda Windows10版本下载和安装 步骤1:Miniconda3下载和安装 # 1、下载地址(Windows 64位) https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe #2、双击进行安装 # 安装注意事项: 1. 安装路径建议&a…...
编译原理:由浅入深从语法树到文法类型
文法与语言基础:从语法树到文法类型 文法(Grammar)和语言(Language)是计算机科学和语言学中解析和理解语言结构的核心概念。无论是编程语言的编译器设计,还是自然语言处理(NLP)中的…...
初识Python
哈哈哈,为了让初学者对python进一步了解,懒惰的博主特地去问了AI,如何更加形象的形容python这一么语言 🌟 Python 是什么? 想象一下,编程语言是一群性格各异的人: C语言:穿格子衫的…...
C++ —— 正向迭代器与反向迭代器
目录 1. 正向迭代器(Forward Iterator) 1.1 基本概念 1.2 核心特性 1.3 典型使用 1.4 重要特点 2. 反向迭代器(Reverse Iterator) 2.1 基本概念 2.2 核心特性 2.3 典型使用 2.4 重要特点 3. 正反迭代器对比 4. 正反迭代…...
FDA会议类型总结
1. 会议类型及目的 1.1 Type A会议 1.1.1 争议解决会议 用于解决药物研发过程中与FDA产生的争议,明确双方分歧点。 通过讨论达成共识,避免因争议影响研发进度。 1.1.2 临床保留讨论会议 针对临床试验中出现的问题进行讨论,决定是否保留临床试验。 综合评估临床试验的安全性…...
数据结构算法竞赛训练网站OJ(Online Judge)
都是个人使用过的算法训练OJ,存个档 洛谷 https://www.luogu.org/ 个人使用最多的,题目较全,每题都有题解博客,社区比较完善。 PTA https://pintia.cn/ 学习数据结构和练习天梯赛的时候使用的。 牛客 https://ac.nowcoder.co…...
快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短链接请求改变浏览器地址等问题
本文要解决的问题 基础的Minio下载安装、java操作方法、完整的工具类。 使用minio时需要注意的地方: 使用Minio的时候,生成资源的临时访问链接时,生成的地址IP是真实的IP和端口,不安全,怎么办? 生成的Min…...
2025年- H11-Lc118-53.最大子数组和(普通数组)---java版
1.题目描述 2.思路 用动态规划方法来解决【最大子数组和】(Maximum Subarray)问题。 pre(当前位置最大和)、 maxAns(全局最大和) 3.代码实现 class H53 {public int maxSubArray(int[] nums) {int curr…...
基于蓝牙Beacon人员导航方案
基于蓝牙Beacon人员导航方案 一、室内定位市场痛点与技术选择 大型商场(单层超2万㎡)和医院(科室超200个)的复杂空间中,传统GPS信号衰减超90%,用户平均寻路耗时10-15分钟,30%购物决策因“找店…...
mysql模糊多次OR查询某一个字段,针对这个字段进行查询分组
一. 需求 有一个mysql表t_test,有两个字段className和studentStr 其中studentStr会用来模糊查询 假如现在有6条数据 1.studentStr字段数据:“小明,小红,小同,小芳,小特,小兰” 2.studentStr字段数据:“小明,小红,小同” 3.studentStr字段数据:“小芳,小特,小兰” 4.stud…...
OpenGL进阶系列21 - OpenGL SuperBible - blendmatrix 例子学习
一:概述 颜色输出阶段是 OpenGL 渲染管线中最后一个阶段。它决定了片段在离开片段着色器之后,最终显示在用户屏幕上的颜色值。颜色输出阶段最重要的一个操作就是混合。本例子重点介绍下OpenGL中的混合操作。 对于每个通过片段测试(per-fragment tests)的片段,会执行混合操…...
阿里语音处理工具ClearerVoice-Studio项目上手指南
ClearerVoice-Studio:开源语音处理全能工具箱 🚀 核心功能速览 语音增强:消除环境噪声(支持16kHz/48kHz)语音分离:多人对话场景的说话人分离(8kHz/16kHz)超分辨率:16kHz→48kHz音质提升目标说话人提取:基于人脸/手势/EEG的多模态提取语音质量评估:9种客观评价指标A…...
31、简要描述Promise.all的用途
Promise.all 是 JavaScript 中用于处理多个异步操作的核心方法,其核心用途是并行聚合多个 Promise 的结果,并在所有操作成功时统一返回结果数组。以下是其关键特性与典型应用场景的简要描述: 核心功能 1、并行执行 接收一个 Promise 数组&…...
OpenVLA-OFT
TL;DR 2025 年斯坦福提出的 OpenVLA 工作的续作 OpenVLA-OFT,优化 VLA 能够有效适应新的机器人平台和任务,优化的技术主要有并行解码、动作块处理、连续动作、L1 回归和(可选的)FiLM 语言调节 Paper name Fine-Tuning Vision-La…...
2025“钉耙编程”中国大学生算法设计春季联赛(8)10031007
题目的意思很好理解找从最左边到最右边最短路(BFS) #include <bits/stdc.h> using namespace std; int a[510][510]; // 存储网格中每个位置是否有障碍(1表示有障碍,0表示无障碍) int v[510][510]; // 记录每…...
代码随想录算法训练营第六十一天 | floyd算法
Floyd 算法精讲 题目链接:97. 小明逛公园 文章讲解:代码随想录 思想:本题是多源最短路,即求多个起点到多个终点的多条最短路径。用Floyd 算法。 Floyd 算法对边的权值正负没有要求,都可以处理,Floyd算法…...
[三分钟]web自动化测试(三):selenium自动化测试常用函数(下)
文章目录 4.等待4.1 强制等待4.2 隐式等待4.3 显式等待 5.浏览器导航5.1 浏览器的前进、后退、刷新5.2 打开网站 6. 弹窗6.1 确认和取消6.2 输入信息 7. 文件上传 4.等待 如果页面渲染的速度赶不上代码执行的速度,可能会因为渲染过慢出现自动化误报的问题。 此时可…...
文档声明:HTML文档的基石
在前端开发的世界里,文档声明虽是一个看似不起眼的细节,却在网页的解析和渲染过程中扮演着至关重要的角色。今天,就让我们深入探讨文档声明的奥秘,揭开它背后的原理和重要性。 一、文档声明的定义与作用 文档声明,顾…...
光学涡旋干涉仪
一、什么是涡旋干涉仪? 涡旋光束一般指电场含有螺旋相位因子exp(iℓθ)的光束,其中ℓ为拓扑荷数,θ为方位角,其波前为螺旋形,光束中心存在相位奇点,因此涡旋光束的光强轮廓是中心强度为零的圆环。早在1992…...
Wireshark快速入门--对启动的后端程序进行抓包
怎么对自己启动的后端程序进行抓包? 1. 安装并启动 Wireshark 你要先从 Wireshark 官网 下载对应系统的安装包,然后进行安装。安装完成后,启动该软件。 可以快速入门可以参考博文:从零开始学 Wireshark:网络分析入门…...
ViTa-Zero:零样本视觉触觉目标 6D 姿态估计
25年4月来自Amazon 公司、Brown 大学和 Northestern 大学的论文“ViTa-Zero: Zero-shot Visuotactile Object 6D Pose Estimation”。 目标 6D 姿态估计是机器人技术中的一项关键挑战,尤其对于操作任务而言。虽然先前结合视觉和触觉(视觉触觉࿰…...
继承(c++版 非常详细版)
一. 继承的概念及定义 1.1 继承的概念 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段,它允许我们在保持原有 类特性的基础上进⾏扩展,增加⽅法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类。继…...
解锁服务器迁移的未来:《2025 服务器迁移效率白皮书》(附下载)
一、背景🏙️ 随着全球数字化转型的不断加速,企业在推动 IT 基础设施现代化过程中,面临着前所未有的服务器迁移挑战。传统的迁移工具和多云、混合云环境带来的复杂性,导致迁移效率低、成本高、人力投入大,从而严重阻碍…...
STM32的Flash映射双重机制
在STM32微控制器中,存在一个重要的内存映射特性:Flash存储器可以同时出现在两个不同的地址区域,而且可以通过重映射功能改变CPU启动时从哪个地址获取初始指令。 STM32的Flash映射双重机制 当描述"通常起始于地址0x00000000,…...
简单了解跨域问题
什么是跨域? 跨域是浏览器基于同源策略的安全机制。 如何两个请求之间,域名,端口,协议三者中有任意一个不同,就会产生跨域问题。 跨域的解决方案 1. CORS(跨源资源共享) 后端通过设置响应头声…...
sql学习笔记(四)
今天看到一个sql题,“近30天,******”,这里需要用到一个函数,date_add,其作用是在指定日期基础上添加一个时间间隔。 语法(以mysql为例): DATE_ADD(date, INTERVAL value unit) d…...
基于 Java 的实现前端组装查询语句,后端直接执行查询方案,涵盖前端和后端的设计思路
1. 前端设计 前端负责根据用户输入或交互条件,动态生成查询参数,并通过 HTTP 请求发送到后端。 前端逻辑: 提供用户界面(如表单、筛选器等),让用户选择查询条件。将用户选择的条件组装成 JSON 格式的查询参数。发送 HTTP 请求(如 POST 或 GET)到后端。示例: 假设用…...
反射与注解实现动态功能扩展案例-插件系统
学海无涯,志当存远。燃心砺志,奋进不辍。 愿诸君得此鸡汤,如沐春风,事业有成。 若觉此言甚善,烦请赐赞一枚,共励学途,同铸辉煌! 开发一个需要高度扩展性的应用,比如Web框…...
auto(x) decay copy
该提案为auto又增加了两个新语法:auto(x) 和auto{x}。两个作用一样,只是写法不同,都 是为x 创建一份拷贝。 为什么需要这么个东西?看一个例子: void bar(const auto&);void foo(const auto& param) {auto co…...
基于STM32、HAL库的DS2411R安全验证及加密芯片驱动程序设计
一、简介: DS2411R是Maxim Integrated(现为Analog Devices)生产的一款1-Wire硅序列号芯片,具有以下特点: 64位唯一ROM序列号(包括8位家族码、48位序列号和8位CRC校验码) 工作电压范围:2.8V至5.25V 工作温度范围:-40C至+85C 采用TO-92或SOT-223封装 通过1-Wire协议通信…...
疫苗接种体系进入“全生命周期”时代:公共卫生治理再提速
疫苗接种体系进入“全生命周期”时代:公共卫生治理再提速 在防控重大传染病的国家公共卫生战略中,疫苗接种始终处于基础性、先导性地位。2025年4月25日是第39个全国儿童预防接种日,活动主题为“打疫苗、防疾病、保健康”。近年来,…...
zynq 7010 PS 串口打印
前言 之前写过一篇文章《zynq 7010 PL 点灯例程》,介绍的是 zynq PL 部分的使用,今天这篇文章则是介绍 zynq PS 部分的使用。 在此之前,先总结点题外话 PL 编程,核心思想是生成 bitstream 文件,加载到 FPGA 运行PS …...
【补题】ACPC Kickoff 2025 F. Kinan The Bank Robber
题意:给出长度为n的序列,接下来给出了两个包裹,你可以选择把数字放进这两个包裹当中,要求你放的的方式,最终会让包裹内的数字双双互质,请你给出你的放法,如果没有输出-1 思路: 1.包…...
局域网传文件——基于flask实现
项目地址 git clone gitgitee.com:xhdx/co_-shared_-doc_in_-local_-net.git 所需python包 flask2.2.3 markdown3.4.1 bleach5.0.1 通过局域网的方式实现文件夹共享,共享的文件会放在uploads这个文件夹下: 运行界面: 包括预览、删除、下载等…...
苍穹外卖10
WebSocket WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信----浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短链接 WebSocke…...
第一天 车联网定义、发展历程与生态体系
前言 车联网(Internet of Vehicles, IoV)作为物联网(IoT)在汽车领域的延伸,正在彻底改变人们的出行方式。无论是自动驾驶、远程诊断,还是实时交通优化,车联网技术都扮演着核心角色。本文将从零…...
大模型(LLMs)强化学习—— PPO
一、大语言模型RLHF中的PPO主要分哪些步骤? 二、举例描述一下 大语言模型的RLHF? 三、大语言模型RLHF 采样篇 什么是 PPO 中 采样过程?介绍一下 PPO 中 采样策略?PPO 中 采样策略中,如何评估“收益”? …...
麻衣相法【麻衣相士】开篇
好久没有发布新的文章了,主要最近一方面没看书,时间基本都用来打游戏了;另一方面看的几本书实在是看不懂,就更不能写上来了。不过今天看到了《麻衣相法》这本书,就又点燃了本人的兴趣,以后失业了,可以摆个小摊子谋生! 话不多说,先把这本书开始的针对人的面部部位进行各…...