STM32库函数GPIO口开发

举报
JeckXu666 发表于 2022/01/18 00:06:09 2022/01/18
【摘要】 STM32库函数GPIO口开发 资料参考正点原子F1开发资料 GPIO重要函数: 重要函数详解: 1个初始化函数: void GPIO_Init(GPIO_TypeDef GPIOx,GPIO...

STM32库函数GPIO口开发
资料参考正点原子F1开发资料

GPIO重要函数:

在这里插入图片描述

重要函数详解:

1个初始化函数:

void GPIO_Init(GPIO_TypeDef GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);*
在这里插入图片描述
使用方式:
GPIO_Init(GPIOB, &GPIO_InitStructure); 库的原理:
1、先定义一个结构体,(方便多次定义端口)
在这里插入图片描述
上面创建一个结构体,用他来创建一个结构体:GPIO_InitTypeDef GPIO_InitStructure;
2、配置结构体
将结构体内部对应的成员赋值;

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置;范围:0~15;
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //推挽输出
																					 //对应方式:
																					 //GPIO_Mode_AIN = 0x00, 模拟输入
																					 //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 复用推挽
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz  、2MHZ 、10MHZ

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2个读取输入电平函数:

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin);*
作用:读取某个GPIO的输入电平。实际操作的是GPIOx_IDR寄存器。
例如:
GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);//读取GPIOA.5的输入电平,第一个是定义哪一个组。第二个是定义哪一个口

uint16_t GPIO_ReadInputData(GPIO_TypeDef GPIOx);*
作用:读取某组GPIO的输入电平。实际操作的是GPIOx_IDR寄存器。
例如:
GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平,返回一个16位值

2个读取输出电平的函数:与上面一样

uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:读取某个GPIO的输出电平。实际操作的是GPIO_ODR寄存器
例如:
GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5);//读取GPIOA.5的输出电平

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
作用:读取某组GPIO的输出电平。实际操作的是GPIO_ODR寄存器。
例如:
GPIO_ReadOutputData(GPIOA);//读取GPIOA组中所有io口输出电平

4个设置输出电平的函数:

void GPIO_SetBits(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin);*
作用:设置某个IO口输出为高电平(1)。实际操作BSRR寄存器

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:设置某个IO口输出为低电平(0)。实际操作的BRR寄存器。

void GPIO_WriteBit(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin, BitAction BitVal);*
void GPIO_Write(GPIO_TypeDef GPIOx, uint16_t PortVal);*
这两个函数不常用,也是用来设置IO口输出电平。

eg:
跑马灯例程:
1、使能IO口时钟。
调用函数RCC_APB2PeriphColckCmd();(不同IO组,调用时钟使能不一样)
2、初始化IO口模式。
调用函数:GPIO_Init();
3、操作IO口,输出高低电平。
GPIO_SetBits();
GPIO_ResetBits();

文章来源: blog.csdn.net,作者:JeckXu666,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45396672/article/details/102859101

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。