STM32单片机入门教程---GPIO输入

文章目录

  • 按键介绍
  • 传感器模块介绍
  • 硬件电路
  • C语言相关知识
    • 数据类型
    • 宏定义
    • typedef
    • 结构体
    • 枚举
  • 代码部分
    • 按键控制LED
    • 光敏传感器控制蜂鸣器

按键介绍

  • 按键:常见的输入设备,按下导通,松手断开;
  • 按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动,最简单的过滤方法就是加一段延时,把抖动时间耗过去;
    STM32单片机入门教程---GPIO输入_第1张图片

传感器模块介绍

  • 传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出;STM32单片机入门教程---GPIO输入_第2张图片
    N1即为随环境条件变化而变化的电阻,R1是与N1进行分压的定值电阻,构成基本分压电路;
    C2时滤波电容,作用是对中间电压输出进行滤波,保证输出电压波形的平滑,确保电路稳定,对电路基本框架无影响;
    二值化输出:通过芯片LM393完成,有两个独立的电压比较器电路,即为运算放大器,当同相输入端电压大于反相输入端电压时,输出瞬间升高为最大值即输出接VCC,当同相输入端电压小于反相输入端电压时,输出瞬间降低为最小值即输出接GND,由此进行二值化输出;

硬件电路

  • 按键的硬件电路:通常使用上面两种电路;(上拉输入模式,按下时引脚为低电平,松开时引脚为高电平)
  • 传感器硬件电路:DO数字输出用于读取数字量;
    STM32单片机入门教程---GPIO输入_第3张图片

C语言相关知识

数据类型

右边的是C语言stdint.h文件和ST对变量的重命名,即int8_t就是char的新名字,表示8位整型数据,uint8_t就是unsigned char的新名字,表示无符号8位整型数据;【ST关键字是旧版库函数的使用方式,推荐使用stdint关键字】STM32单片机入门教程---GPIO输入_第4张图片

宏定义

  • 关键字:#define
  • 用途:用一个字符串替代一个数字,便于理解;提取程序中经常出现的参数,便于快速修改;
  • 定义宏定义:#define ABC 12345
  • 引用宏定义:int a=ABC; //等效于int a=12345;

typedef

  • 关键字:typedef
  • 用途:将一个比较长的变量类型换个名字,便于使用;
  • 定义typedef: typedef unsigned char uint8_t;(后面必须加分号)
  • 引用typedef: uint8_t a;//等效于unsigned char a;

结构体

  • 关键字:struct;

  • 用途:数据打包,不同类型变量的集合;

  • 定义结构体变量:
    struct {char x;int y; float z;} structName;
    因为结构体变量类型较长,所以通常用typedef更改变量类型名;

  • 引用结构体成员:StructName.x=‘A’ 或者用指针引用;

枚举

  • 关键字:enum
  • 用途:定义一个取值受限制的整形变量,用于限制变量取值范围,即变量取值只能是括号内的值;宏定义的集合;
  • 定义枚举变量:enum{FALSE=0,TRUE=1}EnumName;
    因为枚举变量类型较长,通常用typedef更改变量类型名;
  • 引用枚举成员:EnumName=FALSE;

代码部分

-尽量把每个硬件的驱动电路封装出来,便于后续操作,简化主函数的逻辑;

按键控制LED

STM32单片机入门教程---GPIO输入_第5张图片

光敏传感器控制蜂鸣器

STM32单片机入门教程---GPIO输入_第6张图片

你可能感兴趣的:(STM32新手学习,单片机,stm32,嵌入式硬件)