基于stm32的音频数据的Flash读取与ADC播放

一、创建工程

1.1配置sys

选择自己的芯片
在这里插入图片描述

1.2配置定时器

在这里插入图片描述

1.3打开外部时钟

在这里插入图片描述

1.4配置时钟

在这里插入图片描述

1.5配置PC13位output对应板上的LED

在这里插入图片描述

1.6设置堆栈为4K,导出

在这里插入图片描述

二、keil下的配置

2.1添加代码

将flash.c 和flash.h添加到工程中
在这里插入图片描述
添加代码:

#include "flash.h"

在这里插入图片描述

uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];

在这里插入图片描述

	uint8_t i;
	uint8_t FlashTest[] = "Hello This is ZhangShiSan Flash Test DEMO";

在这里插入图片描述

2.2编译运行

在这里插入图片描述
DEBUG下选择STlink
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将程序下载到单片机中
在这里插入图片描述
在这里插入图片描述
下载完成

点击debug
在这里插入图片描述
在view下打开memory1窗口
在这里插入图片描述
在这里插入图片描述
View->Watch windows->Watch 1打开一个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1 观察窗口:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
F5全速运行
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、基于片内flash的提示音播放程序

3.1使用DAC输出周期2kHZ的正弦波

建议先用单音音频(比如2000Hz的正弦波)的wav数据进行实验,通过DAC或PCM音频模块能够基本还原出原始正弦波声音后,再用语言/音乐信号进行实验。
生成单音正弦波
文件–>新建–>音频文件
在这里插入图片描述
效果->生成->音调
在这里插入图片描述
在这里插入图片描述
文件->导出->设置导出为wav文件
在这里插入图片描述
用UltraEdit得到相关数据
用UltraEdit打开刚才保存的wav文件
在这里插入图片描述
CTRL+A,接着鼠标右键,选择 十六进制复制选定视图,将内容粘贴到一个新建文件中
在新建文件中,CTRL+A,接着鼠标右键,选择范围输入起始的行号和列号,确定就选中了整个我们需要的内容
复制到notepad++中
Edit编辑->列块编辑->输入0x
在这里插入图片描述
这里借用DAC生成正弦波的例程代码

链接:https://pan.baidu.com/s/18zsQG5mZXbjafPuAJEUkMg
提取码:706i

将内容复制到keil文件对应的位置,在下图红框中进行替换。
在这里插入图片描述
之后,编译下载,看能否观察到预期的正弦波。

3.2使用DAC输出数字音频歌曲数据转换为模拟音频波形输出

操作同上,采样率修改一下,其余烧录步骤都是一样的,不再赘述。
在这里插入图片描述

四、参考

https://blog.csdn.net/nsnsnbabsb/article/details/111870898
https://blog.csdn.net/zhanglifu3601881/article/details/96632971

版权声明:本文为CSDN博主「薄芩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45917157/article/details/122240425

生成海报
点赞 0

薄芩

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

音频数据的Flash读取与DAC的播放

一、Flash地址空间的数据读取 1.Flash简介 在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部

音频数据的Flash读取与DAC播放(精简)

一、创建STM32CUBEMX工程 芯片选择F103C8 配置定时器 打开外部时钟 配置时钟 配置PC13为output对应板子上的LED 设置堆栈大小为4K,导出 二、KEIL下的配置 将flash.c 和flash