You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
实验名称: STM32 综合操作
视频参考:
1. [STM32 综合实验(全) ](https://www.bilibili.com/video/BV1he411d7sn/?vd_source=3c8e333d6657680a469ddf0238f01d6a )
2. [STM32 综合实验 OLED显示 ](https://www.bilibili.com/video/BV16w411z7Pm/?vd_source=3c8e333d6657680a469ddf0238f01d6a )
3. [实验3第二部分 ](https://www.bilibili.com/video/BV1vw411z75T/?vd_source=3c8e333d6657680a469ddf0238f01d6a )
## 1. 实验内容
综合使用操作系统提供的功能, 结合I2C和ADC的功能实现温湿度的读取, 显示等干功能。

1. AHT20: I2C总线的温湿度传感器;
2. 热电偶温度传感,需要使用外部热电偶连接;
3. 蜂鸣器: 使用PWM可以发出指定频率的声音( 选做) ;
4. I2C的OLED显示器: 用于显示( 选做) 。
## 2. 基本要求
1. 使用两个线程分别读取AHT20的温湿度, 和NTC的温度, 读取时间间隔最好大于一秒;
1. 使用操作系统提供的信号组实现当AHT20和NTC读取完成后比较两个传感器读取温度的差值, 并记录相应的温度差值, 两个传感器的温度, 以及湿度;
1. 通过消息队列的方式向串口发送第二要求中的所有数据,数据格式自定。
## 3. 进阶要求
1. 设定温度告警上线, 当温度超标的时候, 通过蜂鸣器产生告警声; 同时可以考虑使用RGB的LED产生告警的闪光; 声音效果和闪光效果自定;
2. 在OLED显示两个传感器的温度, 温度差, 以及湿度, 显示效果自定;
## 4. 其他说明
1. 中断方式下,如果需要访问全局变量,最好把全局变量使用 volatile 来进行修饰,避免编译器对该变量进行优化。具体参考 https://blog.csdn.net/dengjin20104042056/article/details/107716564 。主函数和中断处理函数相当于两个线程,因为编译器的优化,在一个线程中改变一个全局变量的值,另外一个线程读取到的可能是没有改变前的值,因此需要用 volatile 来标识这个变量,让编译器不优化这个变量的存储(这个变量的值可能因为编译器的优化在寄存器中进行改变,而不是在真正的内存区间)。这个问题书上在中断这部分也说明了。
1. 开发板提供了所有外设的操作例程,请参考开发板提供的例程。
1. 操作系统相关的内容请参考教科书。
## 5. 实验报告要求
按照群中的实验报告的模板,以及模板中的说明进行。