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