作者:詹敏
概述(说明应用产生的背景、实现功能)
简易示波器基于STM32F103芯片及自带ADC开发。可实现电压范围0-3.3V,频率范围1Hz-10kHz正弦波和方波显示,提供自动、普通以及单次三种采样模式,上升沿和下降沿两种触发方式,0~3.3V触发阀值。该系统可满足常见场合使用需求。
开发环境(所采用的软、硬件方案)
硬件:stm32f103-指南者,3.2寸ILI9341液晶显示
RT-Thread版本:3.0.3
开发工具及版:MDK 5.26
RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)
内核部分:调度器,信号量,消息队列。
调度器:创建多个线程来实现不同的工作。
信号量:用来同步线程。
消息队列:用来实现线程之间传递的数据。
硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)
ADC采集波形发生器信号经过stm32f103芯片处理后显示到3.2寸ILI9341液晶屏。
软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)
软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)
线程:
GetWave_thread:波形采样线程;根据所设置的屏幕每一格代表的时间确定采样频率,根据触发阀值和触发模式确定采样开始点,对波形进行采样保存。PlotWave_thread:波形显示线程;根据屏幕区域划分进行波形显示。
KeyScan_thread:按键扫描线程;读取按键值进行转换并发送给设置执行线程。
Setting_thread:设置操作执行线程;执行设置项修改操作并刷新显示信息。
消息队列:
setting_data_queue:将按键扫描线程读取并转换后的设置信息传递给设置执行线程,以完成设置更改和显示信息刷新。
getwave_status_queue:用于波形采样线程和波形显示线程之间通信,确保采样波形及时显示刷新。
key_scan_queue:用于设置线程和按键检测线程之间通信,确保按键信号及时被读取同时避免按键检测线程占用过多资源。
演示效果(演示效果请采用3张高清图片,并录制一段不少于1min视频解说应用所实现的效果,视频上传至B站或者腾讯视频或其他视频平台,给出链接即可)
比赛感悟(可以围绕这次比赛学到了什么,克服了哪些困难,有哪些收获,不低于200字)
本次比赛信息我是通过微信公众号了解到的,看到比赛时间刚好在准备开题期间又考虑到我本身不是控制专业,所以刚开始有点打退堂鼓。但那时候也正是刚刚完成一段时间的理论学习,确实需要一个实践项目来巩固,所以最后抱着试一试的心态没有申请板卡报名了。在截止日期也勉强完成了,但由于过程匆忙,系统仍有很多不完善的地方,算是一点遗憾了。
不过,总的来说收获肯定是不小的,学习如此优秀的国产操作系统RT-Thread并用它完成了自己的作品本身这件事足以让这段时间称得上有意义了。过程中也将之前所学知识应用到时间,加深了理解。虽然比赛已经结束了,后面还是会对作品进行继续优化改进。
最后感谢主办方为我们提供了一个自我锻炼的机会,学习的机会。感谢RT-Thread团队提供的优秀操作系统,后续还会继续深入学习。