STM32入门教程——GPIO输入

前言

本教材基于B站江协科技课程整理,适合有C语言基础、刚接触STM32的新手。它梳理了STM32核心知识点,帮助大家把C语言知识应用到STM32开发中,更高效地开启STM32学习之旅。

目录

前言

一、程序现象与硬件功能

按键控制 LED

光敏传感器控制蜂鸣器

二、硬件电路与关键问题

按键电路与抖动处理

传感器模块工作原理

三、C 语言关键知识点

数据类型与重命名

结构体(Struct)

枚举(Enum)

四、总结与工程应用


一、程序现象与硬件功能

  1. 按键控制 LED

    • 连接两个按键与两个 LED,按下左侧按键时对应 LED 点亮,再次按下则熄灭,右侧按键同理,两者操作互不干扰,实现独立控制。
  2. 光敏传感器控制蜂鸣器

    • 光敏电阻传感器模块与蜂鸣器连接,遮挡光线时(光敏电阻阻值增大),蜂鸣器启动;光线充足时(阻值减小),蜂鸣器停止,体现模拟信号与数字信号的转换逻辑。

二、硬件电路与关键问题

  1. 按键电路与抖动处理

    • 按键原理:按下导通、松手断开,常见接法为下拉电阻式(默认高电平,按下接地变低)或上拉电阻式(默认低电平,按下接电源变高)。
    • 抖动问题:按下 / 松手瞬间因机械触点振动产生高频抖动(5-10ms),需通过程序延时(软件消抖)过滤,避免单片机误判。
  2. 传感器模块工作原理

    • 分压电路:传感器元件(如光敏电阻)与定值电阻串联分压,通过检测电压变化获取模拟量(如光线强度)。
    • 二值化处理:利用电压比较器(如 LM393)将模拟电压转换为数字信号,阈值可通过电位器调节,输出端 DO 用于单片机读取通断状态。

三、C 语言关键知识点

  1. 数据类型与重命名

    • 基本类型:char、int 等在不同平台位数差异(如 51 单片机 int 为 16 位,STM32 中为 32 位),需通过stdint.h头文件使用确定位数的类型(如uint8_t)。
    • typedef 与宏定义typedef为变量类型重命名(如typedef unsigned char uint8_t),宏定义(#define)用于常量替换(如#define HIGH 1),增强代码可读性。
  2. 结构体(Struct)

    • 用途:组合不同数据类型(如struct GPIO {uint8_t pin; uint8_t mode;}),方便函数间传递复杂参数。
    • 引用方式:结构体变量名.成员名或结构体指针->成员名(如gpio.pin = 12;gpio_ptr->mode = INPUT)。
  3. 枚举(Enum)

    • 作用:定义取值受限的整型变量,避免非法赋值(如enum Week {MON=1, TUE, WED},默认递增赋值)。
    • 优势:枚举值可作为宏定义使用,增强代码健壮性(如if (state == ENABLE)if (state == 1)更易理解)。

四、总结与工程应用

  • 核心目标:理解外设硬件原理(按键消抖、传感器信号转换)与 C 语言高级特性(结构体、枚举),为 STM32 编程奠定基础。
  • 实践建议:通过实际电路调试掌握硬件特性,结合库函数源码学习结构体与枚举的具体应用,逐步理解底层驱动逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值