当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]该项目是一个基于微控制器的C语言编写的音频生成器,配备三个按钮,用户可通过按钮播放声音或调节音高。它作为基本GPIO控制和按钮逻辑的实际演示。

该项目是一个基于微控制器C语言编写的音频生成器,配备三个按钮,用户可通过按钮播放声音或调节音高。它作为基本GPIO控制和按钮逻辑的实际演示。

第一步:硬件配置

1. 建立共同基础

•将RT-Spark板上的GND引脚连接到面包板的负极(-)排上。

•将RT-Spark板上的5V引脚连接一根跳线,接到面包板的正极(+)线上。

2. 连接开关

将三个按钮放置在面包板中间的沟槽上。

•SW1(频率提升):将一根引脚连接到接地轨道,另一根引脚连接到PA0引脚。

•SW2(播放音调):将一端连接到接地轨道,另一端连接至PA1引脚。

•SW3(频率下调):将一根引脚连接到接地轨道,另一根引脚连接到PA2引脚。

3. 连接压电蜂鸣器

•将压电元件的正极(长边)直接连接到PA8引脚。

•将压电元件的负极(较短的一端)直接连接到你的地线排上。

第二步:CubeMX 配置

•打开 STM32CubeMX,创建一个新项目,并选择 STM32F407ZGT6。

•启用调试:展开系统核心,点击 SYS,并将调试设置为串行线。

•配置输出:左键单击引脚 PA8 并选择 GPIO_Output。

•配置输入:左键点击 PA0、PA1 和 PA2,将每个设置为 GPIO 输入。

•启用上拉:转到系统核心 > GPIO,选择 PA0、PA1 和 PA2。在下方的配置窗口中,将它们的 GPIO 上拉/下拉设置更改为上拉。

•转到项目管理器选项卡,为您的项目命名,确保工具链设置为 STM32CubeIDE,然后生成代码。

第三步:CubeIDE 代码设置

1. 变量与函数原型

向下滚动到 /* USER CODE BEGIN 0 */。我们将在该处放置变量、自定义的DWT微秒延迟,以及读取引脚(PA0、PA1、PA2)并切换压电元件(PA8)的逻辑函数。

2. 启用循环计数器(用户代码开始 2)

为了确保我们的自定义 delay_us 函数能够访问 CPU 的内部时钟周期,我们必须在主循环开始前启用 DWT 计数器。请在您的 main() 函数中找到以下代码:

3. 主循环(用户代码开始 WHILE)

最后,我们需要不断轮询按钮,以便设备能够立即作出反应。将 update_buttons() 函数直接嵌入无限循环中。

第四步:物理测试

•播放声音:按住并长按 SW2,你应该能听到压电蜂鸣器发出的连续方波音。

•扫频:在持续按住 SW2 的同时,反复轻触 SW1。随着微秒延迟时间的减小,你将听到音调逐渐升高。

•降低音调:按住 SW2,多次轻触 SW3。随着周期增加,你将听到音高逐渐降低。

本文编译自hackster.io

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

在本次实验中,使用了STM32F407ZGT6的模数转换器(ADC)外设来测量两个电压源:CR2032锂聚合物电池和USB 5V总线电源。由于STM32F407ZGT6的ADC只能安全接收最高达VDDA + 0.3V(绝...

关键字: 电压监测器 模数转换器 STM32F407ZGT6

你是否好奇过微控制器如何同时处理多个任务?本项目展示了STM32F407ZGT6 RT-Spark开发板上定时器中断和任务调度的工作原理。两个定时器以不同的频率闪烁LED,而按钮中断则在按下时立即响应——所有这些功能都通...

关键字: 微控制器 开发板 LED STM32CubeMX

该项目是一个简单的人体反应计时器,使用RT-Spark开发板和STM32F407ZGT6微控制器构建而成。它用于测量当RGB LED亮起时,人能多快做出反应。

关键字: 微控制器 开发板 LED STM32F407ZGT6

引言:微控制器广泛应用于嵌入式系统中,用于控制输入和输出设备。GPIO引脚使微控制器能够与所使用的外部硬件进行通信,例如开关按钮、LED灯和显示屏(LCD)。

关键字: 微控制器 嵌入式系统 LED

在本节中,您将学习如何通过Python应用程序,使用UART串行通信协议,将独立的微控制器(如8051(AT89S51或W78E052DDG)、MSP430或PIC16F系列)与PC连接并进行数据交换。

关键字: 微控制器 Python 串行通信 ATmega328P

驱动高密度可寻址LED阵列(如WS2812、WS2811、WS2813和WS2815)通常需要32位ARM微控制器或系统级芯片。然而,8位AVR微控制器在嵌入式应用中依然具有极高的性价比、易获取性和可靠性。

关键字: LED阵列 微控制器 ATmega128

Arduino UNO R4 WiFi 是 Arduino UNO 系列的重大升级,集成了瑞萨(Renesas)RA4M1 32位 ARM Cortex-M4 微控制器,并内置 ESP32-S3 Wi-Fi 和蓝牙连接功...

关键字: LED 矩阵 微控制器 Wi-Fi Arduino UNO R4

本项目使用RT-Spark开发板和STM32F407ZGT6微控制器构建,主要通过代码延时来产生频率,实现引脚的开关控制、读取按钮输入、保存状态,并通过被动蜂鸣器发出提示音。

关键字: 蜂鸣器 开发板 STM32F407ZGT6

在这次实验活动中,我学习了如何在STM32F407ZGT6微控制器上使用定时器、中断和任务调度。主要目标是理解中断的工作原理、多个任务如何在系统中运行,以及不同的调度方法对任务性能的影响。

关键字: 定时器 中断 微控制器 STM32F407ZGT6

显示屏每100毫秒刷新一次,使时钟更新平稳且准确。一个每毫秒运行一次的定时器中断在后台负责时间记录,确保时钟保持精确。同时,一个外部LED灯每秒闪烁一次,然后逐渐变暗直至关闭,通过PWM实现平滑的淡出效果。

关键字: 数字时钟 开发板 STM32F407ZGT6
关闭