最近公司在进行一个项目,需要用到超声波测距的功能,于是在做好硬件电路,但在写控制程序时,却遇上了令我费解的事情。

  当在单片机最小系统上调好输出频率40kHz,占空比50%的方波输出信号后,将程序烧至超声波应用电路中的主控中。实验时,却发现输出波形变成了频率40kHz,占空比小于1%的尖波输出信号。于是我怀疑自己的电路有问题,遂拿了市面上销售的超声波模块成品来学习一下,发现单片机端口的输出波形很正常,没有变形有情况。在网上搜索良久,一直不明白是怎么回事。当某天在阿莫论坛看到一位网友的一句话,提到GPIO端口的“强推挽工作模式”,对我启发很大,开始怀疑是不是端口工作模式设置的问题。

很多年前就学单片机了,一直以来也经常写一些小程序,但是使用GPIO端口时,一直是按默认的配置来使用的(即“准双向IO”)超声波传感器好比是一个电容,当它两个引脚分别接单片机的两个端口时,需要一个端口输出高电平的同时,另一个端口输出低电平,如此反复,才能像晶振一样“起振”,从而输出超声波。但是,如果A端口输出高电平,然后B端口输出低电平,按单片机GPIO的“准双向模式”来分析,此时A端口的状态必然就被改变为与B端口一致了。

  那么如何实现“A端口输出高电平,B端口输出低电平,两个端口的状态却不相互影响”的效果呢?答案是:强推换输出模式

  设置GPIO的工作模式为“强推换输出模式”后,就不会输入电路外部的连接状态了,就是说变成一个纯粹的输出端口了,没有了输出的功能,这样端口的状态只有MCU自己靠程序来改变,外部电路不能改变其状态。

  唉,STC的芯片用户手册好几百页内容,确实在好好研究啊,吸取其中的精华,这样才能真正真是“入门”了,很多应用的问题,都是因为对芯片的设置不了解的原因导致的。

吃了单片机GPIO端口工作模式的大亏 ——关于强推挽输出和准双向口(弱上拉)的实际应用的更多相关文章

  1. GPIO输入输出各种模式(推挽、开漏、准双向端口)详解

    转自:https://blog.csdn.net/techexchangeischeap/article/details/72569999 概述 能将处理器的GPIO(General Purpose ...

  2. 关于STM32中GPIO的8种工作模式

    CSDN:http://blog.csdn.net/l20130316 博客园:http://www.cnblogs.com/luckyalan/ 1 综述 I/O口是单片机中非常常用的外设,STM3 ...

  3. 【转载】stm32的GPIO八种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数 ...

  4. STM32中GPIO的8种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...

  5. STM32入门系列-GPIO工作模式及LED电路原理

    GPIO工作模式 由于GPIO内部的结构关系,决定了GPIO可配置成以下几种模式. 输入模式 在输入模式时,施密特触发器打开,输出被禁止.可通过输入数据寄存器GPIOx_IDR读取I/O状态.输入模式 ...

  6. stm32GPIO的8种工作模式

    推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定. 推挽电路是两个参数相同的三极管或MOS ...

  7. STM32中IO口的8中工作模式

    该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两 ...

  8. apache 的工作模式

    总结:访问量大的时候使用 worker模式:  每个进程,启动多个线程来处理请求,每个线程处理一次请求,对内存要求比较高. prefoek模式 : 每个子进程只有一个线程,一次请求一个进程. 什么是a ...

  9. 关于51单片机P0口的结构及上拉问题

    1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候, ...

随机推荐

  1. “too many open files" ----增大打开的文件数

     http://www.cnblogs.com/ibook360/archive/2012/05/11/2495405.html [root@localhost ~]# ab -n -c http:/ ...

  2. [转] 深度解剖DIV+CSS工作原理

    本文和大家重点讨论一下DIV+CSS工作原理,在一般情况的DIV+CSS开发静态html网页时,我们把html和CSS是分开的,形成html页面和CSS文件. DIV+CSS原理解剖 在一般情况的DI ...

  3. [转] boost------ref的使用(Boost程序库完全开发指南)读书笔记

    http://blog.csdn.net/zengraoli/article/details/9663057 STL和Boost中的算法和函数大量使用了函数对象作为判断式或谓词参数,而这些参数都是传值 ...

  4. Linux开发工具之gdb(下)

    三.gdb调试(下) 01.查看运行时数据 print - 查看变量值 ptype - 查看类型 print array - 查看数组 print *array@len - 查看动态内存 print ...

  5. OD: Kernel Exploit - 2 Programming

    本节接前方,对 exploitme.sys 进行利用. exploitme.sys 存在任意地址写任意内容的内核漏洞,现在采用执行 Ring0 Shellcode 的方式进行利用. 获取 HalDis ...

  6. word2vec生成词向量原理

    假设每个词对应一个词向量,假设: 1)两个词的相似度正比于对应词向量的乘积.即:$sim(v_1,v_2)=v_1\cdot v_2$.即点乘原则: 2)多个词$v_1\sim v_n$组成的一个上下 ...

  7. [转]Delphi 快捷键 让你更像高手!!

    新一篇: IDFTP 控件使用 >>代码模板 : CTRL+J >>代码整块移动 : CTRL+SHIFT+I(右移) CTRL+SHIFT+U(左移)>>选中窗体 ...

  8. hibernate_validator_08

    内置的约束条件 Hibernate Validator包含了一些基本的使用比较广的约束,下面是一些Hibernate Validator给出的最常用的约束.另外Hibernate Validator还 ...

  9. Qt零基础教程(四)QWidget详解(3):QWidget的几何结构

    Qt零基础教程(四)  QWidget详解(3):QWidget的几何结构 这篇文章里面分析了QWidget中常用的几种几何结构 下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Wind ...

  10. Fractal_Test

    本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/Fractal_Test.html  参考:http://catlikecoding ...