输出

什么是GPIO的推挽输出和开漏输出 开漏输出最大的优点就是可以实现线与,两个开漏输出的IO口可以接在一起,当有一个IO为低电平时,其输出就为低电平,只有当两个IO全部为高电平时,输出才为高电平。推挽输出两个IO如果接在一起可能一个IO上面的MOS导通,另一个IO下面的MOS管导通,这样会损坏芯片。所以为了使开漏输出有高电平的输出能力,我们一般需要在外围加上拉电阻。当上面的MOS管导通时,GPIO输出高电平1,称为“推”当下面MOS管导通时,GPIO输出低电平0,称为“挽”1.可实现电平转换,输出电平取决于上拉电阻电源;4.电平切换速度快。 阅读详情

写出下段程序的输出:

  1. #include<iostream>
  2. using namespace std;
  3.       
  4.   class   Value   
  5.   {   
  6.   public: 
  7.       Value()
  8.       {
  9.           cout << "Value()/n";       
  10.       }  
  11.       
  12.       Value(int   nVal)    
  13.       {
  14.           m_nVal=nVal;
  15.           printf("Call   Value::Value(int   nValue)/n");
  16.       } 
  17.         
  18.       ~Value()   
  19.       {
  20.           printf("Call   Value::~Value()/n");
  21.       }   
  22.       
  23.       Value&   operator=(int   nVal)   
  24.       {   
  25.           m_nVal=nVal;   
  26.           printf("Call   Value::operator=/n");   
  27.           return   *this;   
  28.       }  
  29.        
  30.       void   Dump()    
  31.       {
  32.           printf("Value::m_nVal=%d/n",m_nVal);
  33.       } 
  34.         
  35.   protected:   
  36.       int   m_nVal;   
  37.   };   
  38.         
  39.   class   Base   
  40.   {   
  41.   public:   
  42.       Base()   {Init();}   
  43.       virtual   ~Base()   {Release();}   
  44.       virtual   void   Init()       {printf("Call   Base::Init()/n");}   
  45.       virtual   void   Release()     {printf("Call   Base::Release()/n");}   
  46.       virtual   void   Dump()     {printf("Call   Base::Dump()/n");}   
  47.   };   
  48.     
  49.   class   Derive:public   Base   
  50.   {   
  51.   public:
  52.       void change()
  53.       {
  54.           m_Val = 23;     
  55.       }
  56.       Derive()   
  57.       {
  58.           printf("Call   Derive::Derive()/n");
  59.       }   
  60.       ~Derive()   
  61.       {
  62.           printf("Call   Derive::~Derive()/n");
  63.       }
  64.          
  65.       virtual void Init()       
  66.       {
  67.           m_Val=2;
  68.           printf("Call   Derive::Init()/n");
  69.       }   
  70.       
  71.       virtual void Release()   
  72.       {
  73.           printf("Call   Derive::Release()/n");
  74.       }   
  75.       
  76.       virtual   void   Dump()     
  77.       {
  78.           m_Val.Dump();
  79.       }  
  80.        
  81.   protected:   
  82.       static   Value   m_Val;   
  83.   };   
  84.     
  85.   Value   Derive::m_Val=0;  
  86.   //Value   Derive::m_Val= m_Val.operator=(0);   
  87.     
  88.   void   DestroyObj(Base*   pOb)   
  89.   {   
  90.       pOb->Dump();   
  91.       delete   pOb;   
  92.   }   
  93.   
  94.   void   DestroyObj(Base   pOb)   
  95.   {   
  96.       pOb.Dump();   
  97.   }   
  98.     
  99.   int main()   
  100.   {   
  101.       Derive   *pOb=new   Derive;  
  102.       DestroyObj(pOb);    
  103.       system("pause");   
  104.       return 0;
  105.   }  
  106.   
  107.   /*
  108.   输出:
  109.   Call   Value::Value(int   nValue)
  110.   Call   Base::Init()
  111.   Call   Derive::Derive()
  112.   Value::m_nVal=0
  113.   Call   Derive::~Derive()
  114.   Call   Base::Release()
  115.   Call   Value::~Value() 
  116.   */
  117.   
  118.   

将main函数改为 

  1.   int main()   
  2.   {   
  3.       Derive pOb;
  4.       DestroyObj(pOb);    
  5.       return 0;
  6.   }  

并添加一函数:

  1.   void   DestroyObj(Base   pOb)   
  2.   {   
  3.       pOb.Dump();   
  4.   }  

输出为:

Call Value::Value(int nValue)
Call Base::Init()
Call Derive::Derive()
Call Base::Dump()
Call Base::Release()
Call Derive::~Derive()
Call Base::Release()
Call Value::~Value()

总结:

    static 数据在main函数执行以前就已经创建了。

    Value   Derive::m_Val=0;  

    这句话调用了Value的构造函数Value(int)。

3-GPIO八大输出模式 推挽输出 与 开漏输出 GPIO有八大输出模式下图为每个GPIO口的基本结构:通过这张图来学习最右侧是I/O引脚,是从STM32引脚到GPIO口的导线,与其他芯片进行连接的线。芯片内部电路所能承受的电压有限,当未知的静电进入GPIO口,大于所能承受的电压,就会被上方的保护二极管导通,将电压引入电源,由电源网络吸收,当波动电压小于VSS(0V)时,下方保护二极管被导通,波动电压被引入GND中吸收。此结构只能抵御一瞬间的电压波动,若较长的高电压导入芯片,会损坏芯片。 阅读详情

相关推荐

详解开漏输出和推挽输出

一个 GPIO 根据内部 MOS 管的开关情况,存在三种输出状态,分别是高电平、低电平和高阻态。推挽输出,是通过开关管直接接到正极和负极的,所以是强上拉和强下拉的模式。开漏输出是去掉强上拉的开关管,输出低电平时,下管导通,是强下拉。输出高电平时,下管断开,但是没有上管了,此时引脚处于浮空状态,也就是高阻态。开漏输出一般都会配置一颗外部的上拉电阻。通过一个电阻拉到高电平的,属于弱上拉。完全杜绝了电源短路现象,保证电路的安全;避免了引脚模式的频繁切换;

壹的博客 1780

整理笔记——推挽输出、开漏输出

在使用MCU时,常看到配置IO口为推挽输出、开漏输出,以STM32为例,IO口有一下集中模式,单片机的内部电路简化图如下:1.推挽输出2.开漏输出3.复用推挽输出4.复用开漏输出。

#include 4万+

Cass三角网法土方计算优化技巧:如何根据地形特点调整边界采样间距

本文深入探讨了Cass软件中三角网法(DTM法)土方计算的优化技巧,核心在于如何根据地形的复杂程度动态调整边界采样间距。针对平坦、复杂及人工构造物等不同地形特征,提供了具体的间距调整策略与精度验证方法,旨在帮助工程师在计算精度与效率间找到最佳平衡,实现精细化土方计算。

weixin_29294975的博客 525

开漏输出、推挽输出的区别

前言 background:测试相关设备引脚输出,使用示波器时发现部分引脚需外接上拉电阻至高电平才能在示波器观察到高阻态,为了深究其中原理,查阅了相关资料,发现知乎中有一篇对这两种输出描述得清晰易懂的文章,此时才真正了解信号高阻态和高电平输出的区别。 开漏输出(Open Drain Output) 常说的与推挽输出相对的就是开漏输出,对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。下面就从内部结构和原理上说明为什...

DanielZql的博客 3万+

海豚调度器(dolphinscheduler)再次使用,添加钉钉预警

1,首先我们部署是海豚调度器 1.3.8版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉钉模块,只是新版本还没有发布 3,我们现在只是添加简单的钉钉预警,任务成功或者失败会发送邮件+钉钉 4,具体操作 找到最新的源码devhttps://github1s.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-alert/src/ma...

qq_31866793的博客 3084

数模【Mathematica(安装、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例)】

Mathematica(安装and激活、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例) Mathematica_11.3.0 安装教程 Mathematica11.3 激活 P1 笔记本 P2 入门方法 P3 基本计算 P4 基本图形 P5 创建互动模型 P6 利用数据 P7 演示 P8 完整实例

upward 12万+

GPIO之推挽输出和开漏输出

GPIO配置为输出时会有两种模式,一种叫,一种叫。那什么是,什么又是呢?

蒋楼丶的博客 1万+

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

推挽输出&&开漏输出

在学习STM32的时候,我发现了一个很值得研究学习的问题,下面,用我的理解来阐述一遍,这其中的原理。

qq_45570844的博客 1万+

基于STM32、HAL库的ADE7880ACPZ-RL电能计量芯片驱动程序设计

@retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)PA6 (MISO) <--> SDO (SPI数据输出)PB0 (CS) <--> /CS (片选,低有效)

corlin6688的博客 668

宇树G1二次开发资料汇总

宇树科技G1是一款29自由度的商业级人形机器人,配备NVIDIA Jetson Orin NX计算平台和完整SDK生态。本文系统介绍了G1的硬件架构、29个关节配置、传感器外设、双计算单元设计等关键信息,并详细解析了软件生态体系,包括C++/Python SDK、ROS2接口、仿真工具和AI框架。开发者可通过DDS通信实现高层运动控制或底层关节级精确控制,支持快速二次开发。文档提供了网络配置、接口调用示例等实用指南,帮助开发者高效利用该平台进行人形机器人应用开发。

m0_47999117的博客 1323

推挽输出与开漏输出

在使用GPIO口时,会遇到两种配置,一种叫推挽输出,一种叫开漏输出,今天就简聊一聊这两种模式的差异和选择。

Yin_w的博客 6755

RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点

本文记录的是利用模块优化的目标检测网络模型。的目的是在不出现过参数化的情况下有效地增加卷积的感受野,从而解决了在感受野扩展中的参数膨胀问题。本文将其加入到深度可分离卷积中,有效降低模型参数量和计算量,并二次创新,使模块更好地捕捉低频特征,增强网络性能。Wavelet Convolutions for Large Receptive Fields小波卷积及其改进的实现代码如下: 四、创新模块 4.1 改进点1⭐ 模块改进方法:加入(第五节讲解添加步骤)。添加后如下:模块改进方法:基于的(第五节讲解添加步骤)

Limiiiing的博客 1504

推挽输出和开漏输出的区别

一、推挽输出 推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制,两个管子时钟一个在导通,一个在截止,如下图所示 当VIN为高电平、上面的MOS导通,下面的MOS截止,Vout被上拉到VDD 当VIN为低电平、上面的MOS截止,下面的MOS导通,Vout被下拉到GND 优点:能输出高低电平、且高低电平都有驱动能力 缺点:不能实现线与的功能,譬如两个IO一个输出高电平,一个输出低电平,就相当于短路了 二、开漏输出 只能输出低电平,需要借助外部上拉电阻才能输出高电平。 优点:1、可以实现电平转换,因为

wsq_666的博客 5万+

使用 syncstart 实现同场景下多个音视频音轨自动化同步

如果需要在视频编辑中同步多个机位的音轨,使得相同的视频能够同时播放,手动操作可能会变得相当复杂。特别是当处理多个视频文件时,例如有10个视频需要互相匹配,实现一对多的同步关系,这就涉及到为每对视频生成匹配的音轨数据。手动完成这样的任务,如生成90套对应的音轨数据,不仅耗时而且容易出错。因此,使用脚本自动化这一过程是一个更为高效和准确的解决方案。通过编写脚本,您可以批量处理多个视频文件,自动同步它们的音轨,大大简化了音视频编辑的工作流程,并确保了同步的准确性。

Mr数据杨 1077

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

开漏输出和推挽输出

推挽输出:有两个晶体管控制电流,可以同时输出高电平和低电平,适用于需要驱动较大负载的场合。开漏输出:仅使用一个晶体管,输出高电平时通过上拉电阻实现,适用于总线通信、多个设备共享一个信号线的场合。参考:https://blog.youkuaiyun.com/weiqifa0/article/details/115191377。

Go_ahead_forever的博客 3464

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

推挽输出和开漏输出的比较

推挽输出的最大特点是可以真正能真正的输出高电平和低电平,在两种电平下都具有驱动能力。推挽输出的结构是由两个三极管或者MOS管受到互补信号的控制,两个管子始终保持一个处于截止,另一个处于导通的状态。电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高、既提高电路的负载能力,又提高开关速度 常说的与推挽输出相对的就是开漏输出,对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。下面就从内部结构和原理上说明为什么开漏输

m0_61973119的博客 6849

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

GPIO的输出模式——开漏输出&推挽输出

GPIO的输出模式有四种,看到一篇文章,其中‘开漏输出’和‘推挽输出’的形象理解如下:

qq_47607743的博客 4900

推挽输出、开漏输出,以及复用推挽输出和复用开漏输出

推挽输出、开漏输出、复用推挽输出和复用开漏输出是数字电路中常见的四种输出模式。它们各有特点和应用场景,设计者需要根据具体需求选择合适的输出模式来实现电路功能。在实际应用中,这些输出模式经常与微控制器(如STM32)的GPIO引脚配合使用,以实现各种复杂的电路设计和通信协议。

weixin_41230430的博客 4841

开漏输出 推挽输出

看到一篇通俗易懂的好文章,来自http://www.cnblogs.com/ne-zha/p/7422302.html 推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止. 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)....

技术宅的博客 1万+

推挽输出和开漏输出

推挽输出和开漏输出

2402_85219475的博客 2134

复用推挽输出与推挽输出区别

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_SetBits(GPIOE,GPIO_Pin_5); 如果LED1是上拉的话,这时候它被点亮了? GPIO_Mode_AF_PP --->GPIO_Mode_Out_PP// 改为普通推挽输出 此时LED灯熄灭了。那么复用推挽输出和普通推挽输出有什么关系呐...

菜鸟的博客 1万+

开漏输出、推挽输出

摘自:http://www.cnblogs.com/ne-zha/p/7422302.html 1、开漏输出 开漏输出只能输出低电平,类似于三极管的集电极,要输出高电平需要上拉电阻才能输出 我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图1,当左端的输入为...

飞翔的卡布达的博客 5万+

推挽输出和开漏输出区别

推挽输出:可以输出高,低电平,连接数字器件。 输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。 输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。

lostand的专栏 8万+
上一篇: 反转
下一篇: 类中定义一个static数据成员,为什么还要在类外定义?
evilotus
博客等级 码龄18年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值