GPIO相关(自用02)

这篇博客详细介绍了STM32 GPIO的输入输出模式,包括浮空、上拉、下拉、模拟输入以及开漏和推挽输出。讨论了4种最大输出速度,并列出每个IO口下的10个关键寄存器。文中还提及了初始化函数GPIO_Init及读写GPIO电平的函数,是STM32 GPIO应用的基础教程。
摘要由CSDN通过智能技术生成

GPIO输入输出

4种输入 输出模式
输入浮空
输入上拉
输入下拉
模拟输入

4种输出模式

开漏输出(上拉或者下拉)
开漏复用功能(上拉或者下拉)
推挽式输出(上拉或者下拉)
推挽式复用功能(上拉或者下拉)

4种最大输出速度

2MHz
25MHz
50MHz
100MHz

每个IO口下面十个寄存器:

GPIO_MODER端口模式寄存器
GPIOx_OTYPER 端口输出类型寄存器
GPIOx_OSPEEDER 端口输出速度寄存器
GPIOx_PUPDR 端口上拉下拉寄存器
GPIOx_IDR 端口输入数据寄存器
GPIOx_ODR 端口输出数据寄存器
GPIOx_BSRR端口置位/复位寄存器
GPIOx_LCKR端口配置锁存寄存器
复用功能寄存器(低位GPIOx_AFRL&GPIOx_AFRH)
一共可以控制一组GPIO的16个IO口

跑马灯原理:
在LED灯接口左端,输出高电平,无压差,灯灭;输出低电平,由压差,灯亮因此采用
推挽输出(实现强上拉下拉)
stm324xx_rcc.c(几乎所有stm32工程都要用到,因为涉及到时钟的使能)
stm324xx_gpio.c(串口使用)

重要函数:

1个初始化函数
(设置十个中的前四个寄存器(GPIOx->MODER, GPIOx->OSPEEDR,GPIOx->oTYPER,GPIOx->PUPDR)设置模式,速度,输出类型,上下拉):
void GPIO_Init(GPIO_TypeDefGPIOx,
GPIO_InitTypeDef
GPIO_InitStruct);
2个读取输入电平函数(例如读取按键的输入电平):
uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);uint16_t GPIO_ReadlnputData(GPIO_TypeDef* GPIOx);
2个读取输出电平函数(推挽输出时通过输入读取输出电平是多少):
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
4个设置输出电平函数(设置IO口输出高电平还是低电平):
void GPIO_SetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);void GPIO_ResetBits(GPIO TypeDef* GPIOx,uint16 t GPIO Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin, BitAction Bitval);void GPIO Write (GPIO_TypeDef* GPIOx,uint16_t PortVal);"

(下文是基于库函数版本的操作)
一、初始化函数GPIO_Init及其解析

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
   
  uint32_t pinpos = 0x00, pos = 0x00 , currentpin = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
  assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值