[STM32 GPIO配置]

这篇具有很好参考价值的文章主要介绍了[STM32 GPIO配置]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[STM32 GPIO配置]

  • GPIO初始化结构体:
	//定义结构体
	GPIO_InitTypeDef GPIO_InitStructure;
	//配置GPIO_Mode
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	//GPIO_Pin选择
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	//GPIO_Speed设置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  • 关于GPIO_Mode:

在程序函数里是这么写的:

/** 
  * @brief  Configuration Mode enumeration  
  */

typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

​ 其中,具体的模式及使用说明如下:

GPIO_Mode_AIN为模拟输入模式(Analog Input Mode)。

​ 在该模式下,GPIO引脚被配置为模拟信号输入。ADC模块可以将引脚读取到的模拟信号转换成数字信号进行处理。这种模式适用于需要精确模拟量信号输入的场合,如温度传感器、光传感器等。

GPIO_Mode_IN_FLOATING为浮空输入模式(Floating Input Mode)。

​ 在该模式下,GPIO引脚处于高阻态且未选通上拉或下拉电阻。这种模式适用于数字输入信号不需要精度要求的场合,例如控制系统中一些状态量检测、接近传感器等的信号输入。但是,在使用输入浮空模式时,需要注意防止静电干扰和误操作。

GPIO_Mode_IPD为下拉输入模式(Input with Pull-up Mode)。

​ 在该模式下,GPIO引脚通过一个上拉电阻与VDD相连。当外部电路未连接时,引脚被拉向高电平。这种模式适用于需要稳定输入信号的场合,如按键开关、震动传感器等的信号输入。此模式适用于数字输入信号需要精度要求的场合。

GPIO_Mode_IPU为上拉输入模式(Input with Pull-down Mode)。

​ 在该模式下,GPIO引脚通过一个下拉电阻与GND相连。当外部电路未连接时,引脚被拉向低电平。这种模式同样适用于需要稳定输入信号的场合,如按键开关、震动传感器等的信号输入。此模式同样适用于数字输入信号需要精度要求的场合。

GPIO_Mode_Out_OD为开漏输出模式(Open-drain Output Mode)。

​ 在该模式下,GPIO引脚可以输出低电平信号,但输出高电平信号时变为高阻态。需搭配一个外部上拉电阻使引脚运作正确。开漏输出模式适用于驱动外部设备,如LED灯、数码管等。此模式适用于外部设备控制信号输出的场合。

GPIO_Mode_Out_PP为推挽输出模式(Push-pull Output Mode)。

​ 在该模式下,GPIO引脚可以输出高、低电平信号。推挽输出模式适用于直接驱动负载场合,如电机、继电器等的输出驱动。此模式适用于直接驱动负载的控制信号输出的场合。

GPIO_Mode_AF_OD为开漏式复用功能模式(Open-drain Alternate Function Mode)

​ 在该模式下,GPIO引脚可以被配置为一些标准的或自定义的功能,例如I2C总线通讯的SCL时钟线。这种模式下,GPIO引脚被配置为开漏输出模式,适用于驱动外部设备或总线通讯。

GPIO_Mode_AF_PP推挽式复用功能模式(Push-pull Alternate Function Mode)

​ 在该模式下,GPIO引脚可以被配置为一些标准的或自定义的功能,例如USART通信的TX、RX数据线。这种模式下,GPIO引脚被配置为推挽输出模式,适用于直接驱动负载或者数据通讯。

  • 关于GPIO_Speed:

在程序函数里是这么写的:

typedef enum  
{   
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz,  
  GPIO_Speed_50MHz  
}GPIOSpeed_TypeDef;

说实话,我也不太清楚Speed具体有什么用,站内查了一下资料,是这么说的:

​ GPIO 引脚速度,又称输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。)

可理解为: 输出驱动电路的带宽:即一个驱动电路可以不失真地通过信号的最大频率。

​ 这里给出链接stm32引脚速度GPIO_Speed的区别


这样一来,GPIO的基本参数就了解完成了,下面给出完整的配置函数:

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

	GPIO_Init(GPIOA, &GPIO_InitStructure);

​ 这里将GPIOA的Pin_1引脚配置为了上拉输入。因为是从按键函数里拽过来的


给出GPIO的使用函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//设置为高电平
  • GPIOx:要操作的GPIO端口,可以是GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF或GPIOG。
  • GPIO_Pin:要设置为高电平的引脚编号,取值范围为0-15。
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//设置为低电平
  • GPIOx:要操作的GPIO端口,可以是GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF或GPIOG。
  • GPIO_Pin:要设置为高电平的引脚编号,取值范围为0-15。
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//写电平
  • GPIOx:要操作的GPIO端口,可以是GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF或GPIOG。
  • PortVal:要输出的值,取值范围为0到FFFF(16位)。
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取指定GPIO端口和引脚号对应的输入状态
  • GPIOx:GPIO端口号(例如GPIOA、GPIOB等)。
  • GPIO_Pin:引脚号(例如GPIO_Pin_0、GPIO_Pin_1等)。
  • 函数返回值为uint8_t类型。
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读取指定GPIO端口的输入数据
  • GPIOx:可以是A、B、C、D、E、F或G端口之一。
  • 返回值是一个16位的无符号整数,表示指定GPIO端口上各个引脚的电平状态(1为高电平,0为低电平)。

END文章来源地址https://www.toymoban.com/news/detail-826902.html

到了这里,关于[STM32 GPIO配置]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32单片机(三)第二节:GPIO输出练习3(蜂鸣器)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月11日
    浏览(44)
  • 【单片机毕设选题】stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(55)
  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月22日
    浏览(78)
  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(70)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(108)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(54)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(58)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(77)
  • 【单片机毕设选题】 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(62)
  • 单片机项目分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包