电平

STM32 GPIO口的配置和应用

*爱你&永不变心* 提交于 2019-12-14 09:33:31
STM32F103ZET6 一共有7组IO口(有FT的标识是可以识别5v的) 每组IO口有16个IO 一共16*7=112个IO 4种输入模式: (1) GPIO_Mode_AIN 模拟输入 (2) GPIO_Mode_IN_FLOATING 浮空输入 (3) GPIO_Mode_IPD 下拉输入 (4) GPIO_Mode_IPU 上拉输入 4种输出模式: (5) GPIO_Mode_Out_OD 开漏输出 (6) GPIO_Mode_Out_PP 推挽输出 (7) GPIO_Mode_AF_OD 复用开漏输出 (8) GPIO_Mode_AF_PP 复用推挽输出 四种输入模式: 1、一图记住上拉、下拉、浮空输入模式: 原理分析:图中箭头表示信号流动方向。从I/O引脚向左沿着箭头方向,首先遇到两个开关和电阻,与VDD相连的称为上拉电阻,与Vss相连的称为下拉电阻,再连接到施密特触发器(信号转换)把电压信号转化为0、1的数字信号,存储在输入数据寄存器(IDR)。然后通过设置配置寄存器(CRL、CRH)控制这两个开关,于是就可以得到GPIO的上拉输入、下拉输入模式和浮空输入模式,浮空就是既不接上拉也不接下拉。在上拉/下拉/浮空输入模式中,输出缓冲器被禁止(P-MOS和N-MOS),施密特触发器输入被激活,根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接

单片机内部结构原理,让你豁然开朗

谁都会走 提交于 2019-12-13 11:49:44
一、单片机内部结构分析 我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。 二、几个基本概念 1、数的本质和物理现象 我们知道,计算机可以进行数学运算,这令我们非常难以理解,计算机吗,我们虽不了解它的组成,但它们只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:

单片机GPIO的几种模式

℡╲_俬逩灬. 提交于 2019-12-13 07:04:25
http://www.openedv.com/forum.php?mod=viewthread&tid=21980&extra=page%3D1%26filter%3Ddigest%26digest%3D1 http://www.51hei.com/bbs/dpj-137404-1.html GPIO的几种模式: (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 复用推挽输出 浮空:顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。 开漏:就等于输出口接了个NPN三极管,并且只接了e,b. c极 是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了.但是不接电阻上拉的时候,这个输出高就不能实现了。 推挽:就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻. 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中

I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态

我与影子孤独终老i 提交于 2019-12-12 20:17:50
I2C总线基本工作原理:   以启动信号START来掌管总线,以停止信号STOP来释放总线;   每次通讯以START开始,以STOP结束;   启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R. /W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;   当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;   每个数据字节在传送时都是高位(MSB)在前;      I2C总线写通讯过程:   1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;   2. 发送一个地址字节(包括7位地址码和一位R/W);   3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);   4. 主控收到ACK后开始发送第一个数据字节;   5. 被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束;   6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;   总线信号分析    1. 总线空闲状态   I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。   2.

基于定时器扫描的状态机按键,实现单击、双击、长按、短长按、超长按的按键识别

痴心易碎 提交于 2019-12-12 03:35:31
基于定时器扫描的状态机按键,实现单击、双击、长按、短长按、超长按的按键识别 说明 本按键例程是基于10ms的定时器扫描,实现了单击、双击、长按、短长按、超长按的按键识别。希望对你也有帮助。 使用说明: 传入一个读取按键管脚电平的函数指针 该函数为返回bool类型,调用参数void 指针赋值给read_key 本例程按键管脚电平低为按下 若电平高为按下,则将返回值取反 注意自己需要提前做好GPIO初始化,设定管脚为输入等 参考如下: bool read_key1 ( void ) // 读按键1管脚电平 { return HAL_GPIO_ReadPin ( KEY0_GPIO_Port , KEY0_Pin ) ; } bool read_key1 ( void ) // 读按键1管脚电平 { return nrf_gpio_pin_read ( KEY1_PIN ) ; } 传入一个按键回调事件的函数指针 该函数为返回void类型,调用参数void 指针赋值给single_click_callback、long_press_callback、double_click_callback、short_long_press_callback、long_long_press_callback 参考如下: void main_key_release_handle ( void ) //

单片机基础知识必备

半城伤御伤魂 提交于 2019-12-11 11:31:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 单片机概述 什么是单片机(What is Microcontrollers?) 单片机就是一块集成在硅片上的微处理器、存储器以及各种输入输出接口的芯片,这样一块芯片就具备了计算机的属性,因而被称为单片微计算机。其事就是一块集成芯片,但是这块集成芯片具备特殊的功能,这些功能我们可以靠我们自己编程自定义,编程的目的就是使它的各个引脚在不同的时间可以输出不同的电平,进而控制连接到这个单片机各个脚的外围电路的电气状态。 百度百科: 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时

跨时钟域处理

℡╲_俬逩灬. 提交于 2019-12-11 10:42:18
时钟对于FPGA就像我们的心脏,时刻控制着“跳动”的频率以及“血液”的流速;时钟域好比通过心脏的血液血型,不同血型的血液会产生排斥作用。在设计中建议时钟越少越好,好比于人有两个甚至更多的心脏,其内脏工作将会多么混乱。但是某些情况下多时钟又不可避免,比如从FPGA外部输入的数据,其自带有个随路时钟,数据终归要在FPGA内部时钟域下处理,这来自外部的“血液”如何处理才能与内部的“血液”融合呢?配对及转换工作则是必不可少的,这就引入本节的主题:跨时钟域处理(Clock Domain Crossing): 跨时钟域处理需要两方面的工作:1. 设计者处理;2. FPGA工具(Vivado)处理。 1. 设计者处理 首先讲解一下如果不进行跨时钟域处理,会出现什么问题呢?如图1所示路径,QA属于CLKA时钟域的数据输出,另一个时钟CLKB去捕获节点REG A的输出QA,假定CLKA与CLKB是异步时钟,它们之间的相位并不固定,因此捕获过程中可能会出现建立冲突(setup violation)和保持冲突(hold violation),如图2所示,左右分别为发生建立冲突和保持冲突的情况。 图1 图2 当冲突出现时(我感觉整个人都不好了),会发生什么事情呢?在发生建立冲突或者保持冲突,捕获节点(REG B)会处于一个不定的状态,正常的状态是高电平或者低电平,而此时的状态停留在高电平和低电平的中间

STM32 GPIO口的配置和应用

我的梦境 提交于 2019-12-10 16:38:31
STM32F103ZET6 一共有7组IO口(有FT的标识是可以识别5v的) 每组IO口有16个IO 一共16*7=112个IO 4种输入模式: (1) GPIO_Mode_AIN 模拟输入 (2) GPIO_Mode_IN_FLOATING 浮空输入 (3) GPIO_Mode_IPD 下拉输入 (4) GPIO_Mode_IPU 上拉输入 4种输出模式: (5) GPIO_Mode_Out_OD 开漏输出 (6) GPIO_Mode_Out_PP 推挽输出 (7) GPIO_Mode_AF_OD 复用开漏输出 (8) GPIO_Mode_AF_PP 复用推挽输出 四种输入模式: 1、一图记住上拉、下拉、浮空输入模式: 原理分析:图中箭头表示信号流动方向。从I/O引脚向左沿着箭头方向,首先遇到两个开关和电阻,与VDD相连的称为上拉电阻,与Vss相连的称为下拉电阻,再连接到施密特触发器(信号转换)把电压信号转化为0、1的数字信号,存储在输入数据寄存器(IDR)。然后通过设置配置寄存器(CRL、CRH)控制这两个开关,于是就可以得到GPIO的上拉输入、下拉输入模式和浮空输入模式,浮空就是既不接上拉也不接下拉。在上拉/下拉/浮空输入模式中,输出缓冲器被禁止(P-MOS和N-MOS),施密特触发器输入被激活,根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接

STM32 GPIO口的配置和应用

自作多情 提交于 2019-12-10 13:27:37
STM32F103ZET6 一共有7组IO口(有FT的标识是可以识别5v的) 每组IO口有16个IO 一共16*7=112个IO 4种输入模式: (1) GPIO_Mode_AIN 模拟输入 (2) GPIO_Mode_IN_FLOATING 浮空输入 (3) GPIO_Mode_IPD 下拉输入 (4) GPIO_Mode_IPU 上拉输入 4种输出模式: (5) GPIO_Mode_Out_OD 开漏输出 (6) GPIO_Mode_Out_PP 推挽输出 (7) GPIO_Mode_AF_OD 复用开漏输出 (8) GPIO_Mode_AF_PP 复用推挽输出 四种输入模式: 1、一图记住上拉、下拉、浮空输入模式: 原理分析:图中箭头表示信号流动方向。从I/O引脚向左沿着箭头方向,首先遇到两个开关和电阻,与VDD相连的称为上拉电阻,与Vss相连的称为下拉电阻,再连接到施密特触发器(信号转换)把电压信号转化为0、1的数字信号,存储在输入数据寄存器(IDR)。然后通过设置配置寄存器(CRL、CRH)控制这两个开关,于是就可以得到GPIO的上拉输入、下拉输入模式和浮空输入模式,浮空就是既不接上拉也不接下拉。在上拉/下拉/浮空输入模式中,输出缓冲器被禁止(P-MOS和N-MOS),施密特触发器输入被激活,根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接

UART在4412上的裸机开发

百般思念 提交于 2019-12-09 12:46:32
UART(通用异步传输收发器)简介 串行通信简介 我们的实际生活中,常见的通信方式有很多,例如:蓝牙,WIFI,网线,红外,HDMI VGA,USB,I2C,SP1,UART等,每种都有自己的特点以及常用的场合。今天,我们就来看看我们的串行通信。通用异步收发器简称UART,即“Universal Asynchronous Receiver Transmitter”, 它 串行通信是指计算机与I/O 设备之间数据传输的各位是按顺序依次一位接一位进行传送。通常数据在一根数据线上传输。具体情况如下:用来传输串行数据:发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出;接收数据时,UART检测另一根电线上的信号,将串行收集放在缓冲区中,CPU即可读取UART获得这些数据。UART之间以全双工方式传输数据,最精简的连线方法只有三根电线:TxD用于发送数据,RxD用于接收数据,Gnd用于给双方提供参考电平,连线如图7.1所示:transmission recvfrom 我们通俗所使用的串口硬件格式为: 实质上,大部分我们只是使用了里面的3根线。 UART使用标准的TTL/CMOS逻辑电平(0~5V、0~3.3V、0~2.5V或0~1.8V四种)来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提高传输长度,通常将TTL