GD32F130之GPIO

本文详细介绍了GD32F130单片机的GPIO特性,包括55个GPIO引脚的配置、电气特性、四种工作模式(通用数字输出、输入、备用功能和模拟模式)以及配置流程。在输出模式中,提到了推挽和开漏输出的差异,而在输入模式下,讨论了上拉/下拉电阻的应用。此外,还阐述了GPIO在备用功能模式下的使用,如配置为USART的TX/RX引脚。最后给出了一些实际应用的例子。

简介

最多可支持 55 个通用 I/O 引脚(GPIO),分别为 PA0 ~ PA15,PB0 ~ PB15,PC0 ~ PC15,
PD2,PF0,PF1,PF4 ~ PF7,各片上设备用其来实现逻辑输入/输出功能。

每个 GPIO 端口有相关的控制和配置寄存器以满足特定应用的需求。GPIO 端口和其他备用功能(AFs)的备用引脚,在特定的封装下获得最大的的灵活性。GPIO引脚通过配置相关的寄存器可以用作备用功能输入/输出引脚。

每个 GPIO 引脚可以由软件配置为输出(推挽或开漏)、输入、外设备用功能或者模拟模式。

每个 GPIO 引脚都可以配置为上拉、下拉或无上拉/下拉。除模拟模式外,所有的 GPIO 引脚都
具备大电流驱动能力。

电气特性

  • 电流驱动能力:25mA max
  • 内部拉电阻阻值:30~50KΩ,典型值40KΩ
  • 5V容忍:部分引脚支持,详见数据手册

主要配置流程

首先要使用GPIO_CTL寄存器来配置GPIO工作模式,有下面四种工作模式:

  • 通用数字输出模式:主要用于输出数字信号,输出高/低电平
  • 通用数字输入模式:用于读取外部电路输入的数字信号,读取高/低电平
  • 备用功能模式:例如USART的RX,定时器的PWM输出通道,定时器的输入捕获通道等
  • 模拟模式:ADC或者DAC功能的通道

然后,根据不同的工作模式,选着性地使用其他寄存器来进行剩余的配置。如下图所示。例如在通用数字输出模式下,可以使用OMODE来选

GD32F130是一款由STMicroelectronics生产的微控制器,它支持通过GPIO(通用输入输出)控制外部串行移位寄存器74HC595。以下是使用GD32F130GPIO控制74HC595的一般步骤以及简单的代码示例: 首先,你需要配置GPIO用于输出模式,并设置为推挽驱动(Push-Pull): ```c // 配置GPIOB作为输出 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | ... | GPIO_Pin_8; // 选择需要驱动74HC595的GPIO引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置速度为50MHz HAL_GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化GPIO ``` 然后,使用定时器或中断系统来同步发送数据到74HC595,因为74HC595需要时钟脉冲来进行数据的串行传输。这里是一个简化的定时器中断的例子: ```c // 定义定时器和中断相关变量 TIM_HandleTypeDef htim; NVIC_InitTypeDef NVIC_InitStructure; // 配置定时器 TIM_TimeBaseInitTypeDef.TIM_Period = PERIODic_for_595; TIM_TimeBaseInit(&htim, &TIM_InitStructure); HAL_TIM_Base_Start(&htim); // 配置中断 NVIC_InitStructure.NVIC_IRQChannel = TIM_CHANNEL_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); void TIM_CHANNEL_IRQHandler(void) { HAL_GPIO_ToggleBits(GPIOB, GPIO_Pin_0); // 只示例了一个引脚,实际操作可能会涉及多个 } ``` 在这个例子中,`PERIODic_for_595`是确定了给74HC595提供足够时钟周期的时间常量,`TIM_CHANNEL_IRQn`是你需要替换为对应定时器中断服务函数的实际名称。 注意这只是一个基础框架,实际应用中可能需要处理更多细节,例如初始化74HC595、数据并行加载等。另外,记得检查硬件连接和库函数是否正确。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值