基于stm32F4 的语音存储回放系统设计
平台:STM32F407ZGT6
功能:语音存储回放(信号采集、存储、重现)
硬件链接: KEY1 —> PF3
KEY2 —> PF4
LED2 —> PF7
LED3 —> PF8
LED4 —> PF9
LED5 —> PF10
AD输入 —> PA0
DA输出 —> PA3
使用说明:
按以上说明连接好电路,
按下KEY1开始录音(信号采集并存储),此时LED2点亮,此时表示录音正在进行,录音结束后,LED2自动熄灭
录音结束(LED2熄灭)后,按下KEY2开始播放(对之前采集存储的信号进行回放),此时LED4点
亮,表示正在播放,播放结束后,LED4自动熄灭。此时录音回放完成。若要继续使用,按下Reset 键,重复以上步骤。
注意:按键KEY2只有在KEY1按下并等到LED2熄灭后才有效。
不足之处:录音,播放过程当中没有暂停,播放功能。必须等待 Flash 中数据写满,一次存储才完成。
一次录音播放完成之后,不能自动擦除 Flash 中的数据,必须 Reset 后方能进行下次存储。
说明:此代码作者学习STM32入门的实例,只是简单实现了基础功能,因此有很多不足之处。对于初学者来讲可以练习到常用到的外设,如果朋友有兴趣,可以再在此基 础上增加更多的功能并且完善。
例如:
在录音,播放过程中增加暂停,停止,继续(录音)播放功能;
用PCM算法等压缩编码,使同样大小的Flash,录音时间更长;
结合LCD,实现友好的人机交互界面。
凡是你能想得到的......
stm32单片机源程序(主程序):
- /*********************************************************************************
- * Copyright: (C) 2016 SCUEC
- * All rights reserved.
- *
- * Filename: main.c
- * Description:
- *
- * ChangeLog: 1, Release initial version on "5/11/16 10:52:13"
- *
- ********************************************************************************/
-
- #include "stm32f4xx.h"
- #include "stm32f4_flash.h"
- #include "stm32f4_timer.h"
- #include "stm32f4_adc.h"
- #include "stm32f4_dac.h"
- #include "stm32f4_key.h"
- #include "stm32f4_led.h"
- extern uint32_t g_writeAdder;
- extern uint32_t g_readAdder;
- volatile u16 g_flag = 0;
- void Record(void);
- void Play(void);
- int main(void)
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- key_config(); //按键初始化
- Init_LED_GPIO(); //LED初始化
- TIM2_config(); //TIM2定时器配置
- TIM3_config(); //TIM3定时器配置,
- ADC_config(); //ADC配置
- DMA_config(); //DMA配置
- DAC_config(); //DAC配置
-
- while(1)
- {
- if(key_pressed(KEY1) && !g_flag)
- {
- Record();
- }
-
- if(g_flag && key_pressed(KEY2))
- {
- Play();//开始执行Play函数
- if(g_readAdder == 0x0800C004)
- {
- TIM_Cmd(TIM2,DISABLE);
- }
- }
- }
- }
-
- /***************采集并且存储**************/
- void Record(void)
- {
- turn_led(LED2,ON);//LED相关参数配置,点亮LED3
- TIM_Cmd(TIM3,ENABLE);
- }
- /*****读取flash中的值并通过DAC输出*/
- void Play(void)
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
完整资料下载:
Voice_Record_Play-master.rar
(403.71 KB, 下载次数: 213)
|