按键:是常用的输入设备,按下导通松手断开。
按键抖动:因为内部使用弹簧片进行导通,所以在按下或松手瞬间会产生一连串抖动。
传感器模块介绍:

1.光敏电阻传感器2.热敏电阻传感器3.对射式红外传感器4.反射式红外传感器
他们通过传感器原件(光敏电阻/热敏电阻/红外接收管)的电阻会随着外界影响而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出
模拟电压输出就是图中的1,通过N1和R1进行电阻分压输出模拟信号(两个分压可以类比上拉下拉电阻)。数字输出就是图中的2,通过对AO二值化输出(运算放大器当比较器)。
C语言数据类型:

C语言宏定义:
关键字:#define 作用:用一个字符串代替一个数字或常用的一个参数。
typedef:将一个比较长的变量类型名换个名字便于使用。
#define 与typedef区别:1.typedef新名字在右边,#define新名字在左边。 2.#define任何名字都可以更换,typedef只能给变量类型换名字。
按键控制LED代码:
按键模块代码:

完成按键初始化和扫描按键,获取按键编号作用。
LED驱动模块:

作用:初始化 PA1、PA2 引脚,提供 LED 点亮、熄灭、翻转的函数,给 main 主函数调用
主函数代码:

光敏电阻控制蜂鸣器代码:
蜂鸣器模块代码:

设置蜂鸣器初始化函数,蜂鸣器启动关闭,蜂鸣器反转。
光敏传感器代码:

设置初始化函数,获取光敏模块输出的数字信号函数(读取P13引脚电平获取信号)。
主函数代码:

总结:
**第一点:**每个模块代表一块硬件及其功能,每个模块都需要有初始化函数来开启GPIO时钟,创建结构体配置结构体(包括输出模式、控制的接口、传输速度),最后将配置写入STM32寄存器中。
第二点:代码中常用下列四个函数读取外部引脚的真实电压和读寄存器写出的值
uint16代表unsigned short uint8代表unsigned int。
第一个函数用于读取输入寄存器的某一位,第二个函数用于读取整个输入寄存器。
第一个函数用于读取输出寄存器的某一位,第二个函数用于读取整个输出寄存器。
