【STM32嵌入式系统设计与开发---拓展】——1_9 GPIO的输入和输出

这里写目录标题

  • [0、输入 输出](#0、输入 输出)
  • 1、输出
    • [(1)GPIO_SetBits:用于设置 GPIO 引脚的状态(即将指定的引脚设置为高电平)](#(1)GPIO_SetBits:用于设置 GPIO 引脚的状态(即将指定的引脚设置为高电平))
  • 2、输入

0、输入 输出

咋们定义了一个结构体分别给引脚,速度,模式复制

c 复制代码
typedef struct
{
  uint16_t GPIO_Pin;             //指定要配置的 GPIO 引脚。

  GPIOSpeed_TypeDef GPIO_Speed;  // 指定选定引脚的速度。

  GPIOMode_TypeDef GPIO_Mode;    //指定选定引脚的操作模式。
  
} GPIO_InitTypeDef;

结构体到底是什么呢?

什么是结构体?

结构体是一种用于组织和存储数据的方式。你可以把它想象成一个容器,里面装有各种不同类型的数据。这些数据被称为"成员",它们可以是不同的数据类型,比如整数、浮点数、字符等。

类比:学生档案

想象一下,我们要为一名学生创建一个档案。这个档案包含学生的姓名、年龄、成绩等信息。用结构体来表示这个学生档案非常合适,因为结构体可以把这些不同类型的数据放在一起。让我们来创建一个学生档案的结构体。

用代码表示

在C语言或类似语言中,你可以这样定义一个学生结构体:

c 复制代码
复制代码
struct Student {
    char name[50]; // 姓名
    int age;       // 年龄
    float grade;   // 成绩
};
c 复制代码
typedef enum
{
  GPIO_Mode_AIN = 0x0,           // 模拟输入模式
  GPIO_Mode_IN_FLOATING = 0x04,  // 浮空输入模式
  GPIO_Mode_IPD = 0x28,          // 下拉输入模式
  GPIO_Mode_IPU = 0x48,          // 上拉输入模式
  GPIO_Mode_Out_OD = 0x14,       // 开漏输出模式
  GPIO_Mode_Out_PP = 0x10,       // 推挽输出模式
  GPIO_Mode_AF_OD = 0x1C,        // 复用开漏输出模式
  GPIO_Mode_AF_PP = 0x18         // 复用推挽输出模式
} GPIOMode_TypeDef;

struct、typedef、enum都是什么关键词?

struct: 创建一个结构体,把不同类型的数据放在一起

typedef:取一个别名,给类型起个简单的名字

enum:枚举,给一组相关的常量起名字

1、输出

(1)GPIO_SetBits:用于设置 GPIO 引脚的状态(即将指定的引脚设置为高电平)


GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

GPIOx: (A...G) 用于选择 GPIO 外设端口

GPIO_Pin: 指定要写入的端口位


例如

c 复制代码
GPIO_SetBits(GPIOA, GPIO_Pin_1);

c 复制代码
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  GPIOx->BSRR = GPIO_Pin;
}

c 复制代码
typedef struct
{
  __IO uint32_t CRL;   // GPIO 控制寄存器低位
  __IO uint32_t CRH;   // GPIO 控制寄存器高位
  __IO uint32_t IDR;   // GPIO 输入数据寄存器
  __IO uint32_t ODR;   // GPIO 输出数据寄存器
  __IO uint32_t BSRR;  // GPIO 位设置/复位寄存器
  __IO uint32_t BRR;   // GPIO 复位寄存器
  __IO uint32_t LCKR;  // GPIO 锁定寄存器
} GPIO_TypeDef;

2、输入

(1)GPIO_ReadInputDataBit()

主要作用是读取指定 GPIO 引脚的输入数据位状态,以获取外部设备或传感器所提供的二进制信息,为系统的决策和控制提供关键的输入依据

相关推荐
小李不困还能学12 小时前
基于 51 单片机的8 路抢答器设计教程
单片机·嵌入式硬件·mongodb·抢答器
萌动的小火苗13 小时前
嵌入式开发中的栈与队列:任务调度为什么依赖数据结构
数据结构·c++·单片机·嵌入式硬件
振浩微433射频芯片13 小时前
工业遥控器总在关键时刻“掉链子”?——433MHz芯片方案如何破局
网络·单片机·嵌入式硬件·物联网·工业遥控
blevoice14 小时前
抖抖燃脂机单 AC6966B 主控调试踩坑:Type-C 整机供电喇叭无声排障
c语言·开发语言·单片机
三易串口屏15 小时前
三易串口屏开发教程:如何使用键盘控件输入参数并发送给单片机
单片机·嵌入式硬件·串口屏·三易串口屏·键盘控件
十月的皮皮15 小时前
STM32从零到量产开发:四路继电器工业控制模块开发实战笔记(小白视角)
c语言·笔记·stm32·stm32cubemx·hal库
2CM_Embed16 小时前
F28379D 下载后 VOFA+ 无数据、Reset 后恢复:一次 TZ 中断误触发排查记录
笔记·单片机·sci·c2000·f28379d·vofa·tz
国科安芯16 小时前
空间机电一体化:AS32S601型抗辐射MCU在卫星推进与执行机构控制中的关键技术研究
单片机·嵌入式硬件·物联网·机器人·云计算
国科安芯16 小时前
AS32S601型抗辐射MCU在分布式太空算力架构中的技术演进与应用前景
人工智能·分布式·单片机·嵌入式硬件·架构·边缘计算
国科安芯17 小时前
在轨能源中枢:AS32S601型抗辐射MCU在卫星电源管理与配电系统中的控制策略研究
嵌入式硬件·架构·能源·risc-v·sps·电源管理·卫星