当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]该项目使用RT-Spark开发板(STM32F407ZGT6)进行开发。在绿色LED亮起前,会随机生成1到3秒之间的间隔时间。一旦灯亮起,用户应尽快按下按钮。微控制器会计算从按钮中断发生前执行的循环次数,这可作为用户反应速度的相对衡量指标。

该项目使用RT-Spark开发板(STM32F407ZGT6)进行开发。在绿色LED亮起前,会随机生成1到3秒之间的间隔时间。一旦灯亮起,用户应尽快按下按钮。微控制器会计算从按钮中断发生前执行的循环次数,这可作为用户反应速度的相对衡量指标。

STM32CubeMX

步骤1:在STM32CubeMX中配置硬件

1. 打开 STM32CubeMX,然后点击“文件”,再选择“新建项目”。

2. 点击“访问”进入MCU选择器,搜索并选择STM32F407ZGT6微控制器。

3. 在左侧菜单中,展开“系统核心”,然后点击“SYS 更改调试接口为串行线”,这对后续刷机非常重要。

4. 配置LED:在芯片图中,左键单击引脚PF11,选择GPIO_Output。右键该引脚,选择“输入用户标签”,并将其命名为GREEN_LED

5. 配置按钮:左键点击 PC00 引脚(对应 RT-Sparkpark 板上的 LEFT LEFT LEFT 按钮),然后选择 GPIO_EXTI。右键单击该引脚,选择“输入用户标签”,并将其命名为 USER_SWITCH。

6. 设置中断触发器:进入系统核心 > GPIO,点击 USER_SWITCH_SWITCH 引脚(PC0),并将 GPIO GPIO 模式更改为外部中断模式,并启用下降沿检测。

7. 启用中断:进入系统核心 > NVIC,勾选您开关对应的 EXTI EXTI EXTI 线旁边的“启用”框(EXTI line0 中断)。

8. 转到项目管理器选项卡,为项目命名,将工具链/IDE更改为STM32CubeIDE,然后点击生成代码。

STM32CubeIDEIDE 安装

步骤2:将项目导入STM32CubeIDE

1. 在项目资源管理器中,找到你的核心文件夹。你需要在此处创建四个新文件来处理我们的自定义函数。

2. 右键单击 Inc 文件夹,选择“新建”>“头文件”,然后创建 leds.h 和 delay.h。

3. 右键单击 Src 文件夹,选择“新建”>“源文件”,然后创建 leds.c 和 delay.c。

4. 将相应的支持模块代码(位于代码部分)粘贴到以下四个文件中并保存。

步骤3:编写核心固件逻辑

1. 打开位于 Src 文件夹中的 main.c 文件。

2. 在文件顶部附近,找到 /* USER CODE BEGIN Includes */ */ */ 部分,并将您的自定义库与随机数生成的标准库一并包含进去:

3. 向下滚动到 /* USER CODE BEGIN PV */,并声明用于跟踪中断状态和最终得分的全局变量:

4. 滚动到文件底部的 /* USER CODE BEGIN 4 */ */ 处,编写回调函数。这会告诉微控制器在按钮被按下时,立即将我们的标志变量设置为 '1'。

5. 最后,在你的 int main(void)) 函数中找到无限的 while (1)) 循环。将核心游戏逻辑(位于代码部分提供的内容)粘贴到 /* USER CODE BEGIN 3 */ */ */ 块内。

步骤4:构建、刷入并运行

1. 点击顶部工具栏中的锤子图标来构建项目。确保控制台显示 0 个错误。

2. 将 RT-Sparkpark 板插入电脑,然后点击“调试”图标(Bug)将代码烧录到微控制器上。

3. 打开调试视图后,找到“实时表达式”选项卡(或通过“窗口”>“显示视图”>“实时表达式”打开)。

4. 点击“添加新表达式”,然后输入 final_reaction_time。

5. 点击“恢复”图标(绿色播放按钮)以开始代码。

6. 开始游戏吧!请将目光集中在棋盘上的白色方块上。当它变成绿色时,尽快按下左键。查看电脑屏幕,实时看到你的反应得分更新!

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

但没有一款是“恰到好处”的。有些在夜间太亮,有些戴眼镜时从床上看不清,有些会发出刺耳的警报,而另一些则只允许在接下来24小时内设置闹钟。因此,我决定动手自己制作一个,以解决这些问题,并在此过程中加入一些新的智能功能。

关键字: ESP 控制器 LED

这是我在五年前制作的原始矩阵时钟的升级版本。此版本进行了大幅改进:在LED数量相同的情况下,体积比原版小约35%,不再需要依赖Home Assistant进行控制,因为它拥有独立的网页界面。此外,还支持使用备用控制器,并...

关键字: LED 控制器 矩阵时钟 WS2812b

不久前,我发布了一个使用7个按键和7个LED的项目,这种配置在许多地方都常见。但能被3整除的数字(如6、9、12)无法正常工作。因此,按钮需要10个引脚,LED也需要10个引脚,总共需要20个引脚。当将14个数字引脚和6...

关键字: LED Arduino UNO ATmega328PB

本项目是一个专为RT-Thread RT-Spark开发板设计的硬件与软件定制接口。它创建了一个交互式系统,通过物理输入(按钮)产生数字输出(LCD文本和LED信号)。通过连接外部面包板组件与开发板内置功能之间的桥梁,我...

关键字: LCD LED STM32

Soan Papdidi 改变了这种体验。它是一款紧凑、易于上手的纯FPGA开发板——无需MCU,也无隐藏式微控制器,只需掌握原始的FPGA功能即可。该板配备8个DIP开关、8个LED灯和10个I/O引脚,非常适合用于学...

关键字: FPGA 开发板 数字电路 Python

本实验的目的是制作一个电压表,使用RT-Thread RT-Spark开发板(STM32F407ZGT6)来测量CR2032纽扣电池的放电情况。

关键字: ADC 电压表 STM32F407ZGT6

过去几个月里,我一直在设计自己的开发板,以充分发挥其性能。如今,我正在使用WCH的CH32V003F4P6芯片,对这款微控制器所提供的功能和性能感到非常惊叹。我之所以从Arduino转而选择它,是因为这是一款32位RIS...

关键字: 开发板 Arduino CH32V003F4P6

在设计我们的控制器时,我希望采用一个简洁的设计,遵循Xbox手柄的按键布局。我基本保持了按键布局不变,但将整体造型从传统的手柄设计改为圆润的长方体形状,并带有弧形背部。该设计极简,为了美观,我计划使用两种颜色打印部件。

关键字: ESP32C6 开发板 3D打印

几年前,我受到启发,设计了一盏灯,它的控制方式可以像老式电话一样。就像下面图片所示的那样。我不想再有需要依赖手机应用、Wi-Fi或蓝牙的灯具,而是希望它能直观易用且独立运行。

关键字: PCB SK6812 LED

Knock2DrinkDrink 让酒吧和餐厅的顾客通过敲击桌面来点饮料——无需打开应用,也无需按按钮。桌上搭载了内置IMU的Seeed XIAO设备会监听振动。当顾客敲击三到六次时,设备利用训练好的机器学习模型识别出敲...

关键字: LED 微控制器 nRF5284000
关闭