STM32的IO口配置

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。

GPIO端口的每个位可以由软件分别配置成多种模式。

1、输入浮空

2、输入上拉

3、输入下拉

4、模拟输入

5、开漏输出

6、推挽式输出

7、推挽式复用功能

8、开漏复用功能

每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。

IO结构图

端口配置表

输出模式位

当I/O端口配置为输入时:

1、输出缓冲器被禁止

2、施密特触发输入被激活

3、根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接

4、出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

5、对输入数据寄存器的读访问可得到I/O状态

当I/O端口被配置为输出时:

1、输出缓冲器被激活

2、开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(PMOS从不被激活)。

推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。

3、 施密特触发输入被激活

4、弱上拉和下拉电阻被禁止

5、出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

6、在开漏模式时,对输入数据寄存器的读访问可得到I/O状态

7、在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 03:23:29

STM32的IO口配置的相关文章

STM32的IO口的8种配置

STM32的IO口的8种配置 1 STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出) ① 浮空输入_IN_FLOATING ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP ⑦ 复用功能的推挽输出_AF_PP ⑧ 复用功能的开漏输出_AF_OD 1.1 I/O口的输出模式下,有3种输出速度可选(2MHz.10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信

STM32的IO口

STM32 的 IO 口 可以由软件配置成如下 8 种模式: 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入 5.开漏输出 6.推挽输出 7.推挽式复用功能 8.开漏复用功能 每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问.STM32 的很多 IO 口都是 5V 兼容的,这些 IO 口在与 5V 电平的外设连接的时候很有优势,具体哪些 IO 口是 5V 兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level 标 FT 的就是 5V 电平兼容的). S

STM32中IO口的8中工作模式

该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小.效率高.输出既可以向负载灌电流,也

【STM】IO口配置库函数、寄存器、位操作方式

库函数函数: 一个初始化函数:初始化一个或者多个IO口(同一组)的工作模式.输出类型.速度以及上下拉方式 1 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 2 typedef struct 3 { 4 uint32_t GPIO_Pin//指定要初始化的端口 5 GPIOMode_TypeDef GPIO_Mode;//端口模式 6 GPIOSpeed_TypeDef GPIO_Speed;//速度

stm32 普通IO口模拟串口通信

普通IO口模拟串口通信 串口通信协议 串口传输 默认 波特率9600 1起始位 1停止位 其他0 数据位是8位(注意图上的给错了). 传输时,从起始位开始,从一个数据的低位(LSB)开始发送,如图从左向右的顺序,对电平拉高或拉低,最后停止位时拉高. 波特率大小,改变延时时间即可.例如9600 波特率    根据公式 : 1/9600=0.000104s(大致) 也就是说每发送1bit延时104us (下面我用9600波特率来说,代码用的是19200) 串口发送       将电平拉低 延时104

关于STM32的IO口速率问题

输入模式可以不用配置速度,但是输出模式必须确定最大输出频率.当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz.10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的.高频的驱动电路,噪声也高,当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能.注意:GPIO的引脚速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与你的程序有关.

单片机 IO口配置模式介绍

1.准双向口 2.双向口 双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来导致出错.而双向口则不需要做此动作,因为双向口有悬浮态. 准双向口就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口. 真正的双向口不需要任何预操作可直接读入读出. 1>准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低. 2>双向除用于数字输入输出外还可用于模拟输入输出,模拟

关于stm32的IO口的封装

前言:STM32的PA,PB各有16脚,用不上那么多,该怎样处理呢? 注:unchar 是 unsigned char 关于输出同时操作8位 1 //***************************************************************/ 2 #define part_a_o PBout(0)// */ 3 #define part_b_o PBout(1)// */ 4 #define part_c_o PBout(2)// */ 5 #define p

[转]关于stm32硬件spi的miso口配置

在我们刚使用spi时,对于spi的io口配置可能会有一些疑惑吧,miso明明是一个输入口却配置成了复用推挽输出,是不是会有一点疑惑呢? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;