stm32学习笔记---GPIO口操作

一、GPIO的基本概念及寄存器介绍

1、GPIO接口简介

通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使用。因此其作用和功能是非常重要的。
STM32芯片的 GPIO 被分成很多组,每组最多有 16个引脚,如型号为 STM32F407IGT6 型号的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOI共 9组 GPIO,芯片一共 176 个引脚,其中 GPIO就占了一大部分,所有的 GPIO引脚都有基本的输入输出功能。
在这里插入图片描述

2、GPIO功能复用

在这里插入图片描述

3、GPIO寄存器介绍

STM32F4-GPIO常用寄存器

  • 4个32位配置寄存器
    GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR GPIOx_PUPDR
  • 2个32位数据寄存器
    GPIOx_IDR 、GPIOx_ODR
  • 1 个32 位置位 / 复位寄存器
    GPIOx_BSRR
  • 2 个 32 位复用功能配置寄存器
    GPIOx_AFRH 、GPIOx_AFRL

注:每一组GPIO端口都有一套上述的寄存器去配置它自己的功能

3.1、GPIO寄存器MODER

在这里插入图片描述

  • GPIO 端口模式寄存器 (GPIOx_MODER) (x = A…I)
  • 偏移地址: 0x00
    复位值:
    ● 0xA800 0000(端口 A)
    ● 0x0000 0280(端口 B)
    ● 0x0000 0000(其它端口
    在这里插入图片描述
3.2、GPIO寄存器OTYPER

在这里插入图片描述
在这里插入图片描述

  • GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A…I)
  • 偏移地址: 0x04
    复位值: 0x0000 0000
3.3、GPIO工作原理框图

在这里插入图片描述

3.4、GPIO寄存器OSPEEDR

在这里插入图片描述
在这里插入图片描述

  • GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A…I/)
  • 偏移地址:0x08
    复位值:
    ● 0x0000 00C0(端口 B)
    ● 0x0000 0000(其它端口)
3.5、GPIO寄存器PUPDR

在这里插入图片描述
在这里插入图片描述

  • GPIO 端口上拉/ 下拉寄存器 (GPIOx_PUPDR) (x = A…I/)
  • 偏移地址:0x0C
  • 复位值:
    ● 0x6400 0000(端口 A)
    ● 0x0000 0100(端口 B)
    ● 0x0000 0000(其它端口)
3.6、GPIO寄存器IDR

在这里插入图片描述
在这里插入图片描述

  • GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A…I)
  • 偏移地址:0x10
  • 复位值:0x0000 XXXX(其中 X 表示未定义)
3.7、GPIO寄存器ODR

在这里插入图片描述
在这里插入图片描述

  • GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A…I)
  • 偏移地址:0x14
  • 复位值:0x0000 0000
3.8、GPIO寄存器BSRR

在这里插入图片描述
在这里插入图片描述

  • GPIO 端口置位/ 复位寄存器 (GPIOx_BSRR) (x = A…I)
  • 偏移地址:0x18
  • 复位值:0x0000 0000
3.9、GPIO寄存器AFRL

在这里插入图片描述
在这里插入图片描述

  • GPIO 复用功能低位寄存器 (GPIOx_AFRL) (x = A…I)
  • 偏移地址:0x20
  • 复位值:0x0000 0000
3.10、GPIO寄存器AFRH

在这里插入图片描述
在这里插入图片描述

  • GPIO 复用功能高位寄存器 (GPIOx_AFRH) (x = A…I)
  • 偏移地址:0x24
  • 复位值:0x0000 0000

二、照亮电子世界的那盏灯——LED寄存器版

1、硬件原理图分析

在这里插入图片描述
在这里插入图片描述

2、使能GPIO的时钟

STM32 外设很多,为了降低功耗,每个外设都对应着一个时钟,在芯片刚上电的时候这些时钟都是被关闭的,如果想要外设工作,必须把相应的时钟打开。
所有的 GPIO 都挂载到 AHB1 总线上,所以它们的时钟由 AHB1外设时钟使能寄存器(RCC_AHB1ENR)来控制
在这里插入图片描述
使能GPIOF的时钟
在这里插入图片描述

  • RCC AHB1 外设时钟使能寄存器 (RCC_AHB1ENR)
  • 偏移地址:0x30
  • 复位值:0x0010 0000
  • 访问:无等待周期,按字、半字和字节访问。

3、编程步骤分析

开启GPIOF的时钟

   RCC_AHB1ENR |= (1<<5);

配置PF7, PF8, PF9, PF10接口

  GPIOF->MODER |= (1<<14)|(1<<16)|(1<<18) )|(1<<20);   //设置PF7, PF8, PF9, PF10为通用输出模式
  GPIOF->OTYPER = 0x0;                                      		  //设置PF7, PF8, PF9, PF10为通用推挽输出
  GPIOF->OSPEEDR = 0x0;                                  		 //设置输出速度为低速

控制LED;

   GPIOF->BSRR = (1<<23)|(1<<24)|(1<<25)|(1<<26);   //复位PF7, PF8, PF9, PF10 既点亮LED
   GPIOF->BSRR = (1<<7)|(1<<8)|(1<<9)|(1<<10);         //置位PF7, PF8, PF9, PF10既熄灭LED

4、实例操作

4.1 、新建工程

1、打开STM32CubeMx,新建工程
在这里插入图片描述
2、选择芯片,双击确认
在这里插入图片描述
3、管脚配置,搜索相应管脚
在这里插入图片描述
4、左键对应管脚,选择GPIO_Output
在这里插入图片描述
5、导出工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2、打开工程

1、点击open project,会自动调用打开keil
在这里插入图片描述
2、编译一下工程
在这里插入图片描述
在这里插入图片描述
3、配置查看
在这里插入图片描述
4、MX_GPIO_Init()对GPIO模式进行封装,鼠标右键,跳转查看
在这里插入图片描述
默认设置
在这里插入图片描述
如果需要配置可以在CubeMx里进行
在这里插入图片描述

4.3、功能代码

在这里插入图片描述
编译程序,烧写代码,主控板需要开机
在这里插入图片描述

三、照亮电子世界的那盏灯——LED库函数版

1、库函数

在这里插入图片描述

2、库函数控制代码

在这里插入图片描述

3、功能代码

在这里插入图片描述

四、按键

1、硬件原理图分析

在这里插入图片描述

2、CnbeMx配置

在这里插入图片描述

3、查看配置

在这里插入图片描述

4、功能代码

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值