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

按键介绍

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

传感器模块介绍

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

硬件电路

  • 按键的硬件电路:通常使用上面两种电路;(上拉输入模式,按下时引脚为低电平,松开时引脚为高电平)
  • 传感器硬件电路:DO数字输出用于读取数字量;
    在这里插入图片描述

C语言相关知识

数据类型

右边的是C语言stdint.h文件和ST对变量的重命名,即int8_t就是char的新名字,表示8位整型数据,uint8_t就是unsigned char的新名字,表示无符号8位整型数据;【ST关键字是旧版库函数的使用方式,推荐使用stdint关键字】在这里插入图片描述

宏定义

  • 关键字:#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

在这里插入图片描述

光敏传感器控制蜂鸣器

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值