GPIO输出

STM32F103C8T6的GPIO输出

一、GPIO简介

 GPIO,全称General Purpose Input Output,即通用输入输出口。STM32F103C8T6共有16个GPIO口(GPIOA~GPIOE),每个GPIO口都有自己的控制寄存器,可通过寄存器写入控制字来控制GPIO口的状态。

STM32F103C8T6的GPIO引脚电平为0~3.3V,部分引脚可达到5V。GPIO口可配置为多种输入输出模式,包括:

  • 输入模式:悬浮输入(默认状态)、上拉输入、下拉输入、模拟输入(用于ADC采集)。
  • 输出模式:推挽输出、开漏输出、复用推挽输出。
二、GPIO基本结构

STM32的所有GPIO都挂载在APB2外设总线。GPIO外设的命名按照GPIOA、GPIOB等,每个GPIO外设有16个引脚,编号从015,即PA0PA15。

三、GPIO输出操作步骤
  1. 使用RCC开启GPIO时钟

    首先,需要使用RCC(Reset and Clock Control)里面的APB2外设时钟控制函数来开启GPIO时钟。例如,要开启GPIOA的时钟,可以使用以下代码:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  2. 使用GPIO_Init函数初始化GPIO

    接下来,需要调用GPIO_Init函数来初始化GPIO。初始化时需要配置GPIO的模式(输入、输出等)、引脚号、速度等参数。例如,要将GPIOA的第0脚配置为推挽输出模式,可以使用以下代码:

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
  3. 使用输出函数控制GPIO口

    最后,可以使用GPIO的输出函数来控制GPIO口的电平。常用的输出函数有GPIO_SetBits(设置高电平)、GPIO_ResetBits(设置低电平)、GPIO_WriteBit(设置指定电平)和GPIO_Write(写入16位数据)。例如,要点亮连接到GPIOA第0脚的LED灯,可以使用以下代码:

    GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 设置GPIOA第0脚为低电平,点亮LED灯(假设LED灯负极接GPIO口)
四、代码

以下代码可用于通过GPIOA的第0脚点亮和熄灭LED灯:

#include "stm32f10x.h" // Device header
#include "Delay.h" // 延时函数库(需自行实现或引用)
int main() {
// 打开APB2的GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
// 初始化GPIOA第0脚为推挽输出模式,速度为50MHz
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1) {
// 点亮LED灯,延时1秒
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
Delay_s(1);
// 熄灭LED灯,延时1秒
GPIO_SetBits(GPIOA, GPIO_Pin_0);
Delay_s(1);
}
return 0;
}
五、注意
  1. 引脚连接:确保LED灯或其他外设正确连接到GPIO引脚,并注意电源和地线的连接。
  2. 延时函数:示例代码中使用了Delay_s函数来实现延时,该函数需要自行实现或引用其他延时库。
  3. 保护电路:在连接外部设备时,注意添加必要的保护电路,如限流电阻、二极管等,以防止损坏STM32引脚或外部设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值