stm32 软件模拟复用输入怎么用

stm32 软件模拟复用输入怎么用,第1张

根据数据手册提供的信息,stm32的io口一共有八种模式,他们分别是:

四种输入模式

上拉输入:通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平。

下拉输入:把电压拉到GND。与上拉原理相似。

浮空输入:引脚内部什么都不接,处于浮空模式下,电平状态是不确定的。外部信号输入什么,IO口就是什么状态。

模拟输入:接收到的是连续的模拟信号,一般用于AD转换。

四种输出模式

推挽输出:可以输出高低电平,连接数字器件。在stm32中推挽电路由两个MOS管组成:输出高电平时P-MOS管导通,引脚联通VDD(3.3v)。输出低电平时N-MOS导通,引脚联通GND。**该方式既提高电路的负载能力,又提高开关速度。 **

开漏输出:无法直接输出高电平,要在外部连接上拉电阻才行,输出的电压由上拉电阻连接的电源决定。适合做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。开漏输出还有一个特性:线与。即很多开漏模式引脚连接在一起,只有当所有引脚都输出1时,才能够被上拉电阻拉到高电平。若有一个引脚为低电平,则所有引脚相当于接地。

复用推挽输出:简单来说就是给内部外设使用的推挽输出模式,

复用开漏输出:简单来说就是给内部外设使用的开漏输出模式

在STM32中,根据不同的使用场景,选用不同的IO模式:

GPIO的功能描述

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

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

-输入浮空

-输入上拉

-输入下拉

-模拟输入

-开漏输出

-推挽式输出

-推挽式复用功能

-开漏复用功能

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

下图给出了一个I/O端口位的基本结构。

每一种MUC都有其控制I/O的方法。

STM32最常用就是利用库函数控制输入输出。

控制流程:初始化I/O功能 ---> 对I/O进行 *** 作

初始化函数:

void IO_Init(void){ //LED灯的接口初始化

GPIO_InitTypeDef GPIO_InitStructure

//使能GPIOB时钟,因为我们要使用GPIOB上的管脚

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE)

//我们需要使用GPIOB的管脚,但是管脚位我们使用0号,所以总来说是PB0

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0

//选择PB0管脚的功能

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP//选择IO接口工作方式为推挽输出

/*可取值

GPIO_Mode_AIN 模拟输入

GPIO_Mode_IN_FLOATING 浮空输入,采集数字信号

GPIO_Mode_IPD 下拉输入,高电平有效

GPIO_Mode_IPU 上拉输入,低电平有效

GPIO_Mode_Out_PP 推挽输出,有推动能力的输出

GPIO_Mode_Out_OD 开漏输出,无推动能力

GPIO_Mode_AF_PP 复用推挽输出,复用功能时启用

GPIO_Mode_AF_OD 复用开漏输出,复用功能时启用*/

//配置IO口的输出速度,如果是输入功能,这个就不用设置了

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz //可设置IO接口速度(2/10/50MHz)

//将上面设置写入到GPIOB设置寄存器

GPIO_Init(GPIOB, &GPIO_InitStructure)

}

输入与输出函数:

STM32提供了好几种输出函数

输入主要是读引脚电平,也提供了几个函数

这些函数需要题主在学习过程中掌握,这里我只是给以一个控制流程。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6768265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存