1.什么是GPIO
GPIO(General Purpose Input Output):通用输入输出口。
输出模式下可用于驱动LED、蜂鸣器、模拟通信协议输出时序等。
输入模式下可读取端口的高低电平和电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
GPIO挂载在APB2总线上
2.GPIO模式
推挽输出(PP):STM32端口完全由GPIO控制,寄存器写入高电平端口输出高电平,写入低电平输出低电平
上拉输入(IPU):悬空时默认引脚为高电平
3.GPIO输出
GPIO配置流程:
1.初始化
1.1打开GPIO对应时钟
1.2选择模式,这里选择推挽输出
1.3选择端口号和速度
2.设置端口的输出
1.LED闪烁
1.LED原理图
2.硬件接线图
通过A0口控制LED灯
LED灯引脚较长的一端为正极,另一端为负极
tips:面包板的使用方法
顶部和底部的+-每行的孔洞相当于连接在一起
中间部分每列的孔洞相当于连接在一起
3.源码
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
//使用各个外设前必须开启时钟,否则对外设的操作无效
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIO引脚,赋值为第0号引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数
//函数内部会自动根据结构体的参数配置相应寄存器
//实现GPIOA的初始化
/*主循环,循环体内的代码会一直循环执行*/
while (1)
{
/*设置PA0引脚的高低电平,实现LED闪烁,下面展示3种方法*/
/*方法1:GPIO_ResetBits设置低电平,GPIO_SetBits设置高电平*/
GPIO_Rese