STM32的8种输入输出方式
STM32端口输入输出模式配置
![STM32端口输入输出模式配置](https://img.taocdn.com/s3/m/e1b8ab7db94ae45c3b3567ec102de2bd9605de90.png)
STM32端⼝输⼊输出模式配置STM32的IO⼝模式配置根据数据⼿册提供的信息,stm32的io⼝⼀共有⼋种模式,他们分别是:四种输⼊模式上拉输⼊:通过内部的上拉电阻将⼀个不确定的信号通过⼀个电阻拉到⾼电平。
下拉输⼊:把电压拉到GND。
与上拉原理相似。
浮空输⼊:引脚内部什么都不接,处于浮空模式下,电平状态是不确定的。
外部信号输⼊什么,IO⼝就是什么状态。
模拟输⼊:接收到的是连续的模拟信号,⼀般⽤于AD转换。
四种输出模式推挽输出:可以输出⾼低电平,连接数字器件。
在stm32中推挽电路由两个MOS管组成:输出⾼电平时P-MOS管导通,引脚联通VDD(3.3v)。
输出低电平时N-MOS导通,引脚联通GND。
**该⽅式既提⾼电路的负载能⼒,⼜提⾼开关速度。
**开漏输出:⽆法直接输出⾼电平,要在外部连接上拉电阻才⾏,输出的电压由上拉电阻连接的电源决定。
适合做电流型的驱动,其吸收电流的能⼒相对强(⼀般20ma以内)。
开漏输出还有⼀个特性:线与。
即很多开漏模式引脚连接在⼀起,只有当所有引脚都输出1时,才能够被上拉电阻拉到⾼电平。
若有⼀个引脚为低电平,则所有引脚相当于接地。
复⽤推挽输出:简单来说就是给内部外设使⽤的推挽输出模式,复⽤开漏输出:简单来说就是给内部外设使⽤的开漏输出模式在STM32中,根据不同的使⽤场景,选⽤不同的IO模式:GPIO_Mode_AIN:模拟输⼊,⼀般⽤作模数转换GPIO_Mode_IN_FLOATING:浮空输⼊,常⽤在key识别上**GPIO_Mode_IPD: **下拉输⼊--- IO内部下拉电阻输⼊GPIO_Mode_IPU:上拉输⼊--- IO内部上拉电阻输⼊GPIO_Mode_Out_OD:开漏输出---可以外接上拉电阻输出较⾼的电平,也能够通过读取IO的电平变化实现C51的IO双向功能。
**GPIO_Mode_Out_PP: **推挽输出---IO输出0-接GND,IO输出1 -接VCC,读输⼊值是未知的。
STM32的输入输出管脚配置
![STM32的输入输出管脚配置](https://img.taocdn.com/s3/m/c89bc1848762caaedd33d413.png)
STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出)①浮空输入_IN_FLOATING②带上拉输入_IPU③带下拉输入_IPD④模拟输入_AIN⑤开漏输出_OUT_OD⑥推挽输出_OUT_PP⑦复用功能的推挽输出_AF_PP⑧复用功能的开漏输出_AF_OD1.1I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O 口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。
通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能(EMI是Electro Magnetic Interference的缩写,即电磁干扰;EMC是Electro Magnetic Compatibility的缩写,指电磁兼容性)。
当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。
比如:1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
1.2 GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
1.3 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
1.4 所有端口都有外部中断能力。
STM32中GPIO的8种工作模式总结
![STM32中GPIO的8种工作模式总结](https://img.taocdn.com/s3/m/b79e1032a6c30c2259019eb0.png)
STM32 中GPIO 的8 种工作模式总结
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。
高低电平由IC 的电源决定。
形象点解释:推挽,就是有推有拉,任何时候IO 口的电平都是确定的,不需要外接上拉或者下拉电阻。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路
中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。
输出既可以向负载灌电流,也可以从负载抽取电流。
推拉式输出级既提高电路的负载能力,又提高开关速度。
二、开漏输出:
开漏,就等于输出口接了个NPN 三极管,并且只接了E,B,而C 极是开
路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出
1 的时候,就可以是5V 电压,也可以是3.3V 电压了,但是不接电阻上拉的
时候,这个输出高就不能实现了。
输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA 以内)。
开漏形
式的电路有以下几个特点:。
STM32单片机的八种IO口模式解析
![STM32单片机的八种IO口模式解析](https://img.taocdn.com/s3/m/a2e90c75192e45361166f523.png)
STM32单片机的八种IO口模式解析
STM32八种IO口模式区别
(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复用推挽输出
以下是详细讲解
(1)GPIO_Mode_AIN模拟输入
即关闭施密特触发器,将电压信号传送到片上外设模块(不接上、下拉电阻)
(2)GPIO_Mode_IN_FLOATING浮空输入
浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的
(3)GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入
一般来讲,上拉电阻为1K-10K,电阻越小,驱动能力越强
电阻的作用:防止输入端悬空,减少外部电流对芯片的干扰,限流;,增加高电平输出时的驱动能力。
上拉输入:在默认状态下(GPIO引脚无输入)为高电平
下拉输入:在默认状态下(GPIO引脚无输入)为低电平
(4)GPIO_Mode_Out_OD开漏输出
开漏输出:输出端相当于三极管的集电极。
要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,。
推荐-第4章 stm32单片机通用输入输出GPIO 精品
![推荐-第4章 stm32单片机通用输入输出GPIO 精品](https://img.taocdn.com/s3/m/c9ad2ca2ff00bed5b8f31d2b.png)
为了使不同器件封装的外设IO功能的数量达到最优,可以把一些复用 功能重新映射到其它一些引脚上,这可以通过软件配置相应的寄存器 来完成。
USART3_TX 的默认引出脚是 PB10, USART3_RX 的默认引出脚是 PB11;重映射 后,USART3_TX 的引出脚为 PD8,变更 USART3_RX 的引出脚为PD9
STM32 引脚
PC口 16脚 PD口 3脚
PA口 16脚
PB口 16脚
STM32F103RBT6 包含4个端口: PA口 、PB口、PC口、PD口,共有 51个I/O管脚: PA口 16脚+ PB口16脚+ PC口16脚+ PD口3脚。
4.1 STM32F10x的输入/输出基本结构
4.2 GPIO相关功能寄存器
STM32单片机 最多有7个16位的并行 I/O端口: PA、PB、PC、PD、PE、PF、PG。
STM32F103Cx、103Rx单片机 只有4个16位的 并行 I/O端口:PA、PB、PC、PD。
STM32 引脚
PC口 3脚 PD口 2脚
PA口 16脚
PB口 16脚
STM32F103CBT6 包含4个端口: PA口 、PB口、PC口、PD口,共有 37个I/O管脚: PA口 16脚+ PB口16脚+ PC口3脚+ PD口2脚。
STM32F10x处理器的每个GPIO端口都对应有: 2个32位配置寄存器(GPIOx-CRL,GPIOx-CRH) 2个32位数据寄存器(GPIOx-IDR,GPIOx-ODR) 1个32位置位/复位寄存器(GPIOx-BSRR) 1个16位复位寄存器(GPIOx-BRR) 1个32位锁定寄存器(GPIOx-LCKR)
STM32的八种GPIO工作方式详解
![STM32的八种GPIO工作方式详解](https://img.taocdn.com/s3/m/5bb6f55876c66137ee061999.png)
STM32的八种GPIO工作方式详解STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。
GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。
通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。
STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。
GPIO基本结构每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。
这边的电路图稍微提一下:保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。
当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。
这里的电路会在下面很详细地分析到。
TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。
但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。
ADC外设要采集到的原始的模拟信号。
这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着。
STM32微处理器 GPIO接口定义
![STM32微处理器 GPIO接口定义](https://img.taocdn.com/s3/m/7f828123af1ffc4fff47ac06.png)
例如:读取GPIOE.5引脚输出值 GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_5);
GPIO_ReadOutputData()函数是读取指定IO口16个引脚的输出值, 也就是读取寄存器ODR的值
IO端口低配置寄存器CRL描述,如下图1所示。 该寄存器的复位值为:
0X4444 4444 既配置端口为浮空输入模式
STM32
认识STM32的IO口
2. STM32的IO端口寄存器
② 端口高配置寄存器CRH
CRH的作用和CRL完全一样,CRH控制的是高8位输出口。 例如:设置GPIOC的11位为上拉输入,12位为推挽输出,输出速率为
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
通过这3个语句,设置了PC11为上拉输入,PC12为推挽输出、速率为50MHz。
STM32
认识STM32的IO口
2. STM32的IO端口寄存器
例如:设置GPIOC的11位为上拉输入,12位为推挽输出,输出速率为50MHz
。若采用stm32f10x_gpio.c文件中的GPIO_Init函数设置,代码如下:
设连接的时候很有优势,具体哪些IO口是5V兼容的,可从数据 手册引脚描述查到(I/O Level标FT的就是5V电平兼容的)。
《嵌入式技术》期末考试题及答案A(基于STM32)
![《嵌入式技术》期末考试题及答案A(基于STM32)](https://img.taocdn.com/s3/m/dc67281b6d85ec3a87c24028915f804d2b16873c.png)
《嵌⼊式技术》期末考试题及答案A(基于STM32)《嵌⼊式技术》期末考试题1⼀、填空题(20分)1.ARM 这个缩写包含两个意思:⼀是指___________;⼆是指______________。
2.常⽤的AT89C52单⽚机为_____位单⽚机,⽽STM32单⽚机为____位单⽚机。
3.常⽤的STM32F103~107系列单⽚机是基于_________内核,此内核采⽤的是___________结构。
4.STM32单⽚机共有8种输⼊输出模式,其中输⼊模式有____种,输出模式有_____种。
5.在编写按键检测程序时,加⼀个延时判断的⽬的是为了__________,这种⽅法叫________。
⼆、判断题(20分)1、学习嵌⼊式技术不需要硬件基础,只需要会编写软件即可。
()2、STM32F103~107系列单⽚机的最⼤系统时钟频率为72MHz。
()3、STM32F103~107系列单⽚机的⼯作电压为5.0V。
()4、STM32的软件开发环境有Keil u5、IAR等。
()5、STM32的开发模式只有基于固件库函数⽅式⼀种。
()三、名词解释(20分)1、GPIO2、TIMER3、USART4、OS四、简答题(40分)1、请举例说明,在你⾝边有哪些是单⽚机应⽤系统(⾄少举3例)?2、与常⽤的AT89C52单⽚机⽐较,STM32单⽚机有哪些⽅⾯的优点?3、STM32单⽚机常见的基本功能部件(外设)有哪些?4、编写⼀个函数,函数描述:控制LED每隔1S闪烁⼀次,控制LED的引脚为PC8,只写出具体的控制函数即可,整体程序不⽤编写。
《嵌⼊式技术》期末考试题1 参考答案⼀、填空题1、ARM 公司ARM 公司设计的CPU及其架构2、8 323、Cortex-M3 哈佛2、4 43、延时消抖软件消抖法⼆、判断题1、?2、?3、?4、?5、?三、名词解释1、输⼊/输出接⼝2、定时器3、通⽤串⾏通信接⼝4、操作系统四、简答题1、略2、(1)stm32 单⽚机的运算速度⽐AT89C52单⽚机的快;(2)stm32 单⽚机能移植操作系统,这样能处理多任务;(3)stm32 单⽚机外围接⼝功能⽐AT89C52单⽚机强⼤。
STM32学习资料
![STM32学习资料](https://img.taocdn.com/s3/m/81bb2925192e45361066f5a1.png)
STM32学习心得赫丛奎主要内容STM32基础功能和涉及到的库函数功能简介➢1、GPIO➢2、时钟➢3、ADC➢4、USART、➢5、TIM/PWMGPIOGPIO 是STM32最常用的设备之一。
STM32可以提供最多达80个双向IO 口(视型号而定),他们分别布在A到E 这5个端口中。
每个端口有16个GPIO。
每个GPIO口都可以承受最大5V的管压降。
通过GPIO配置寄存器,开发人员可以把GPIO口配置成想要的工作模式,一共8 种可能的配置:(4 输入+2 输出+2复用输出)➢①浮空输入_IN_FLOATING➢②带上拉输入_IPU➢③带下拉输入_IPD➢④模拟输入_AIN➢⑤开漏输出_OUT_OD➢⑥推挽输出_OUT_PP➢⑦复用功能的推挽输出_AF_PP➢⑧复用功能的开漏输出_AF_OD硬件电路硬件电路如图,LED0和LED1分别通过一个1K的限流电阻连接在STM32的GPIO.2和GPIO.3上,另一端接GND程序设计要点1、配置RCC寄存器组,使用PLL输出72MHz时钟;2、配置GPIOA.2和GPIOA.3为推挽输出,最大翻转频率为50MHz3、通过在GPIOA.2和GPIOA.3上输出高电平点亮LED,反之输出低电平熄灭LEDGPIO试验工程文件组详情试验流程图时钟1、时钟源在STM32中,共有5个时钟源:HSI、HSE、LSI、LSE、PLL。
①、HSI是高速内部时钟,RC振荡器,频率为8MHz。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI是低速内部时钟,RC振荡器,频率为40kHz。
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。
倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
40kHz的LSI供独立看门狗IWDG使用,或实时时钟RTC的时钟源。
《ARM嵌入式系统》期末考试试题库
![《ARM嵌入式系统》期末考试试题库](https://img.taocdn.com/s3/m/f316af25bb1aa8114431b90d6c85ec3a87c28bbc.png)
《ARM嵌入式系统》期末考试试题库《ARM嵌入式系统》试题库一、填空题(每题3分,共15分)1、ARM 这个缩写包含两个意思:一是指___________;二是指______________。
2、常用的AT89C52单片机为_____位单片机,而STM32单片机为____位单片机。
3、常用的STM32F103~107系列单片机是基于_______内核,此内核采用的是__________结构4、STM32单片机共有8种输入输出模式,其中输入模式有_____种,输出模式有_____种。
5、在编写按键检测程序时,加一个延时判断的目的是为了__________,这种方法叫________。
6、如果LED阴极接地,阳极通过一个电阻接单片机PA1端口,则当单片机PA1端口输出为高电平时LED状态为_______;当输出为低电平时LED状态为_______。
7、STM32单片机的GPIO口可以配置为__________模式和__________模式。
8、常STM32的__________为通用同步异步收发器,可以利用__________发生器提供宽范围的波特率选择。
9、STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、__________模式和__________模式。
10、STM32具有单独的位设置或位清除能力。
这是通过__________和__________寄存器来实现的。
11、如嵌入式系统的设计可以分成三个阶段:分析、__________和__________。
12、微处理器有两种总线架构,使用数据和指令使用同一接口的是__________,分开的指令和数据接口、取指和数据访问可以并行进行的是__________。
13、ARM核有两个指令集,分别是__________指令集、__________指令集。
14、嵌入式系统开发采用的交叉开发环境是由__________和__________组成的。
STM32通用输入输出之GPIO(STM32神舟I号开发板)
![STM32通用输入输出之GPIO(STM32神舟I号开发板)](https://img.taocdn.com/s3/m/bff6fdd0ce2f0066f53322f8.png)
表 3:端口 C GPIO 管脚描述 描述
通用输入/输出 PC1 到 PC12 通用输入/输出 PC13 到 PC15 的 I/O 口功能有限制(同一时间内只有 一个 I/O 口可以作为输出,速度必须限制在 2MHZ 内,而且这些 I/O
口不能当作电流源(如驱动 LED))
管脚名称 PD[1:0]
6.1 通用输入/输出(GPIO) ............................................................................................1 6.1.1 管脚特性...........................................................................................................1 6.1.2 GPIO应用领域 .................................................................................................1 6.1.3 管脚分配...........................................................................................................1 6.1.4 GPIO管脚内部硬件电路原理剖析..................................................................2 6.1.5 STM32 的GPIO管脚深入分析 ........................................................................5 6.1.6 在STM32 中如何配置片内外设使用的IO端口............................................10 6.1.7 例程 01 单个LED点灯闪烁程序 ..................................................................11 6.1.8 例程 02 LED双灯闪烁实验 ........................................................................14 6.1.9 例程 03 LED三个灯同时亮同时灭 ............................................................16 6.1.10 例程 04 LED流水灯程序 ...............................................................................17
嵌入式技术与应用开发项目教程(STM32版)习题答案
![嵌入式技术与应用开发项目教程(STM32版)习题答案](https://img.taocdn.com/s3/m/4a840beeb84ae45c3a358c10.png)
嵌入式技术与应用开发项目教程(STM32版)习题答案项目一LED控制设计与实现1-1 嵌入式系统是如何定义的?嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是控制、监视或辅助设备、机器或用于工厂运作的设备。
目前,国内普遍认同的嵌入式系统定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
1-2 嵌入式系统具有哪些特点?嵌入式系统具有以下几个显著特点:(1)嵌入式系统是面向特定应用;(2)软件要求固态化存储;(3)嵌入式系统的硬件和软件都必须具备高度可定制性;(4)嵌入式系统的生命周期较长;(5)嵌入式系统开发需要开发工具和环境。
1-3 ARM Cortex-M3处理器是哪几个部分组成?嵌入式系统一般是由嵌入式处理器、存储器、输入输出和软件(嵌入式设备的应用软件和操作系统是紧密结合的)等4部分组成。
1-4 简述STM32F103系列产品的命名规则。
STM32F103系列产品的命名规则,是按照“STM32F103XXYY”格式来命名的,具体含义如下:(1)产品系列:STM32是基于ARM Cortex-M3内核设计的32位微控制器;(2)产品类型:F是通用类型;(3)产品子系列:101是基本型、102是USB基本型(USB全速设备)、103是增强型、105或107是互联型;(4)引脚数目(第一个X):T是36脚、C是48脚、R是64脚、V是100脚、Z是144脚;(5)闪存存储器容量(第二个X):4是16K、6是32K、8是64K、B是128K、C是256K、D是384K、E是512K;(6)封装(第一个Y):H是BGA、T是LQFP、U是VFQFPN、Y是WLCSP64;(7)温度范围(第二个Y):6是工业级温度范围-400C~850C、7是工业级温度范围-400C~1050C。
《微处理器与嵌入式系统设计》期末复习要点
![《微处理器与嵌入式系统设计》期末复习要点](https://img.taocdn.com/s3/m/9ed5f3f4d4bbfd0a79563c1ec5da50e2524dd11b.png)
《微处理器与嵌入式系统设计》期末复习要点程序编写利用定时器TIM2实现LED灯精确1s闪烁一次。
LED灯由PB5端口控制。
(提示:TIM2在APB1总线上,速率为72MHz。
定时时间计算公式:T=(TIM_Period +1)*(TIM_Prescaler +1)/TIMxCLK)time.cvoid TIM2_Int_Init(){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //时钟使能TIM_TimeBaseStructure.TIM_Period = (36000-1); //设置自动重载计数周期值TIM_TimeBaseStructure.TIM_Prescaler =(2000-1); //设置预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分频因子:fDTS = fCK_INT TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数方式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIM2的时间基数单位TIM_ITConfig(TIM2,TIM_IT_Update ,ENABLE); //使能TIM2更新中断/*****配置TIM2中断参数**/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM2中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //响应优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器TIM_Cmd(TIM2, ENABLE); //使能TIM2外设}led.cvoid LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB5端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化端口GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB5 输出高电平}main.cu8 i=0;int main(void){delay_init(); //延时函数初始化LED_Init(); //初始化与LED连接的硬件接口TIM2_Int_Init();//初始化定时器2while(1);}void TIM2_IRQHandler(void) //TIM2中断服务函数{if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查TIM2中断发生与否{i=~i; //变量i取反if(i==0)GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB5 输出高电平elseGPIO_ResetBits(GPIOB,GPIO_Pin_5); //PB5 输出低电平}TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除TIM2更新中断标志}《嵌入式系统与设计》复习题一、填空题1.ARM这个缩写包含三种含义:一是指();二是指();三是指()。
最全的STM32八种IO口模式讲解
![最全的STM32八种IO口模式讲解](https://img.taocdn.com/s3/m/f29def650622192e453610661ed9ad51f01d549d.png)
最全的STM32八种IO口模式讲解STM32是一种基于ARM Cortex-M处理器的微控制器系列,具有强大的性能和广泛的应用领域。
而IO口是STM32微控制器中常见的功能之一,它允许我们与外部设备进行通信和数据交换。
在STM32中,IO口有八种不同的模式,本文将逐一进行讲解。
1. 输入浮空模式(Floating Input)输入浮空模式是IO口的默认模式。
在这种模式下,IO口既不输出也不输入电平信号,它的电平状态由外部电路决定。
这种模式非常适用于连接外部传感器或其他输入设备。
2. 模拟输入模式(Analog Input)模拟输入模式是用于连接模拟传感器的模式。
在这种模式下,IO口被配置为模拟输入引脚,可以读取来自传感器的模拟电压值。
3. 输出推挽模式(Push-pull Output)输出推挽模式是最常用的IO口模式之一、在这种模式下,IO口既能输出高电平,也能输出低电平。
它能够驱动较大负载,并且在输出状态下具有较低的电平谐波失真。
推挽输出模式常用于控制LED灯、继电器和其他外部设备。
4. 输出开漏模式(Open-drain Output)输出开漏模式也被称为开漏输出模式。
在这种模式下,IO口只能输出低电平,而不能输出高电平。
当IO口输出低电平时,它会与外部上拉电阻连接,使得整个电路可以实现低电平输出。
开漏输出模式常用于I2C总线和其他需要共享信号线的应用。
5. 复用推挽模式(Push-pull Alternate Function)复用推挽模式是IO口的特殊模式之一、在这种模式下,IO口既可以用于通用IO功能,也可以用作一些外设的引脚。
复用推挽模式常用于USART、SPI和I2C等串行通信接口。
6. 复用开漏模式(Open-drain Alternate Function)复用开漏模式也是IO口的特殊模式之一、在这种模式下,IO口可以用作一些外设的引脚,并且只能输出低电平。
复用开漏模式常用于I2C总线和其他需要共享信号线的应用。
STM32--输入捕获和输出比较
![STM32--输入捕获和输出比较](https://img.taocdn.com/s3/m/5fc69907cd7931b765ce0508763231126edb7784.png)
STM32--输⼊捕获和输出⽐较概述⾸先,明确⼀点对⽐AD的构造,stm32有3个AD, 每个AD有很多通道(⼀个外设可以有多个中断通道,但是每个中断通道只有⼀个外设),使⽤哪个通道就配置成哪个通道(只设置⽤⼀个就可以),这⾥定时器也如此,有很多定时器TIMx,每个定时器有很多CHx(通道),可以配置为输⼊捕捉-------测量频率⽤,也可以配置为输出⽐较--------输出PWM使⽤输⼊捕获输⼊捕捉:可以⽤来捕获外部事件,并为其赋予时间标记以说明此事件的发⽣时刻。
外部事件发⽣的触发信号由单⽚机中对应的引脚输⼊(对应的引脚设置成输⼊)(具体可以参考单⽚机的datasheet),也可以通过模拟⽐较器单元来实现。
时间标记可⽤来计算频率,占空⽐及信号的其他特征,以及为事件创建⽇志,主要是⽤来测量外部信号的频率。
1.1、朋友,可以解释⼀下输⼊捕获的⼯作原理不?很简单,当你设置的捕获开始的时候,cpu会将计数寄存器的值复制到捕获⽐较寄存器中并开始计数,当再次捕捉到电平变化时,这是计数寄存器中的值减去刚才复制的值就是这段电平的持续时间,你可以设置上升沿捕获、下降沿捕获、或者上升沿下降沿都捕获。
它没多⼤⽤处,最常⽤来测频率。
1.2、计数寄存器的初值,是⾃⼰写进去的吗?是的,不过默认不要写⼊(即计数寄存器为零)1.3、我如果捕获上升沿,两个值相减,代表的时两个上升沿中间那段电平的时间。
对不?是的1.4、timer1有五个通道(对应五个IO引脚),在同⼀时刻,只能捕获⼀个引脚的值,对不?那是肯定的,通道很像ADC通道,是可以进⾏切换的。
输出⽐较输出⽐较:定时器中的计数寄存器在初始化完后会⾃动的计数,从bottom计数到top,并且有不同的⼯作模式。
另外,还有个⽐较寄存器。
⼀旦计数寄存器在从bottom到top 计数过程中与⽐较寄存器匹配(在计数的过程中进⾏⽐较,不单指bottom或top)则会产⽣⽐较中断(⽐较中断使能的情况下),这⾥的匹配指的是计数寄存器的值与⽐较寄存器的值相等。
STM32 带CAN通讯 输入输出板原理图
![STM32 带CAN通讯 输入输出板原理图](https://img.taocdn.com/s3/m/7b7ff1ed941ea76e58fa049e.png)
100NF/16V 3.3VA AGND C32 100NF/16V
AGND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
PE2 PE3 PE4 PE5 PE6 VBAT PC13-TAMPER-RTC PC14-OSC32_IN PC15-OSC32_OUT VSS_5 VDD_5 OSC_IN OSC_OUT NRST ADC_IN10/PC0 ADC_IN11/PC1 ADC_IN12/PC2 ADC_IN13/PC3 VSSA VREFVREF+ VDDA PA0-WKUP/UART2_CTS/ADC_IN0 PA1/UART2_RTS/ADC_IN1 PA2/UART2_TX
D
3V3 CAN_1 CAN_0 CAN_TXD CAN_RXD BOOT0 LED_AD_3 LED_AD_4 LED_AD_5 NJTRST JTDO 1 OUT8 2 OUT7 3 OUT6 4 OUT5 1 OUT4 2 OUT3 3 OUT2 4 OUT1 LED_AD_6 IN_12 IN_11 JTDI JTCK
75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51
RP21 4.7 K NC
R232_TX R232_RX CAN_TXD CAN_RXD RP17 4.7 K JTDO NJTRST JTMS JTCK JTDI RESET PSE_Test_ADC_1 PSE_Test_ADC_2 PSE_Test_ADC_3 PSE_Test_ADC_4 PSE_Test_ADC_5 PSE_Test_ADC_6
STM32系列单片机原理及应用-C语言案例教程 第2章 STM32的内部结构及接口特点
![STM32系列单片机原理及应用-C语言案例教程 第2章 STM32的内部结构及接口特点](https://img.taocdn.com/s3/m/7c5e545f3a3567ec102de2bd960590c69ec3d849.png)
WK_UP
STM_ADC USART2_TX USART2_RX GBC_KEY STMDAC
GBC_LED
OV_VSYNC USART1_TX USART1_RX
USB_DUSB_D+ JIMS JICK JIDI
的 存 储
的 时 钟
单 片 机
狗定 时器 的功
中 断
综 器 系 复 能与
述
统
位
操作
2.1 STM32单片机综述
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用 设计的ARM Cortex®-M0,M0+,M3, M4和M7内核。 • 主流产品(STM32F0、STM32F1、STM32F3); • 超低功耗产品(STM32L0、STM32L1、STM32L4); • 高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)等。
(1)浮空输入
(5)推挽输出
(2)带弱上拉输入 (6)开漏输出
(3)带弱下拉输入 (7)复用推挽输出
(4)模拟输入
(8)复用开漏输出
STM32基本上每个引脚都有以上8种配置模式
STM32内部 结构方框图
引脚配 置模式
2.1.3 STM32引脚功能描述
STM32F103拥有资源包括:
• 64KB SRAM、512KB FLASH、 • 2个基本定时器、4个通用定时器、2个高级定时器 • 2个 DMA 控制器 • 3个SPI、2个IIC、5个串口、1个USB、1个CAN • 3个12 位 ADC、1个12 位 DAC • 1个SDIO 接口、1个FSMC接口 • 112个通用IO口。
中国海洋大学ARM原理及应用复习题
![中国海洋大学ARM原理及应用复习题](https://img.taocdn.com/s3/m/6290c33b67ec102de2bd89de.png)
《ARM原理及应用》复习题填空题1.STM32F103是_32_位单片机,内核是ARM公司的___Cortex-M3___。
2.STM32F103最高工作频率___72MHz___。
片内具有多种外设,它们分别是:_GPIO_、_USART_、_I2C_、_SPI_、_ADC_、_DAC_、_TIM_、_RTC_、_IWDG_、_WWDG_。
3.STM32103的GPIO端口具有多种配置状态,输入有3种状态,它们分别是_模拟输入_、_浮空输入__和上拉/下拉输入;输出有4种状态,它们分别是_通用推挽输出_、_通用开漏输出_、_复用推挽输出_和_复用开漏输出_。
4.ST公司的STM32系列芯片采用了 Cortex-M3__内核,STM32F103最高工作频率为 72__ MHz。
5.当STM32的I/O端口配置为输入时,输出功能被_禁止_,施密特触发器被激活__。
6.STM32的所有端口都有外部中断能力。
当使用外部中断线时,相应的引脚必须配置成输入模式。
7.STM32具有单独的位设置或位清除能力。
这是通过 GPIOx->BRR_ 和GPIOx->BSRR 寄存器来实现的。
8.STM32芯片内部集成的 12位位ADC是一种逐次逼近型模拟数字转换器,具有 18 个通道,可测量 16 个外部和 2 个内部信号源。
9.STM32的 NVIC 管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现时延的中断处理,并有效地处理后到的中断。
10.系统计时器(SysTick)提供了1个 24位二进制递减计数器,具有灵活的控制机制11.STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和向上下计数(向上向下双向计数)模式。
12.STM32系列ARM Cortex-M3芯片支持三种复位形式,分别为上电复位、接键复位和备份复位。
简答题1.什么是嵌入式系统?它与通用计算机有何区别?答:嵌入式系统是以应用为中心,以计算机技术基础,软/硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个
输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。
这样一来,输出高低电平时,VT3 一路和 VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。
又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。
因此,推拉式输出级既提高电路的负载能力,又提高开关速度。
开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
开漏形式的电路有以下几个特点:
1. 利用外部电路的驱动能力,减少IC内部的驱动。
当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up
,MOSFET到GND。
IC内部仅需很下的栅极驱动电流。
2. 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。
比如加上上拉电阻就可以提供TTL/CMOS电平输出等。
(上拉电阻的阻值决定了逻辑电平转换的沿的速度。
阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。
)
3. OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。
因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。
所以如果对延时有要求,则建议用下降沿输出。
4. 可以将多个开漏输出的Pin,连接到一条线上。
通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。
这也是I2C,SMBus等总线判断总线占用状态的原理。
补充:什么是“线与”?:
在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上. 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS),晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑. 如果这个结点后面加一个反相器, 就是或 OR 逻辑.
其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。
关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:
该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。
右边的则可以理解为开漏输出形式,需要接
上拉。
浮空输入:对于浮空输入,一直没找到很权威的解释,只好从以下图中去理解了
由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。
复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)
最后总结下使用情况:
在STM32中选用IO模式
(1)浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
(2)带上拉输入_IPU——IO内部上拉电阻输入
(3)带下拉输入_IPD—— IO内部下拉电阻输入
(4)模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。
当输出
为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。
可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)
STM32设置实例:
(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD;。