基于stm32f103c8t6的flash的数据读取以及提示音播放程序
文章目录
- 一. 题目
- 二. 所使用软件硬件
- 三. 基于flash的数据读取
- 四. 基于片内Flash的提示音播放程序
- 1. 使用DAC输出周期2khz的正弦波
- 2. 使用DAC输出数字音频歌曲数据转换为模拟音频波形输出
- 五. 参考链接
课程任务要求,条件不足无法验证后续操作。
一. 题目
预备实验:Flash地址空间的数据读取。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率。
基于片内Flash的提示音播放程序。
1)实验数据准备:用Adobe audition或goldwave等音频编辑软件录制“您好欢迎光临!”的几秒钟的声音(8khz采样、8bit量化编码的单声道wav格式),确保音频数据尽量小(最大不超64KB)。然后编程将其分批次写入stm32f103c8t6芯片内部flash区域。
2)数字音频还原播放任务:编程读取此段音频,分别通过 (a)stm32f103c8t6自带的DAC通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还原效果;
二. 所使用软件硬件
硬件:
- stm32f103c8t6最小核心板
- stlink下载器
软件:
- stm32cubemx
- adobe audition
- UltraEdit
- notepad++
三. 基于flash的数据读取
用stm32cubemx创建工程
对于stm32cubmx不熟悉的可以查看我的另一篇:STM32CubeMX实现串口通信_diyu-CSDN博客_stm32cubemx串口通信
这次的配置基本与这个一致。
因为使用stlink下载程序,所以这里debug调试接口选择Serial Wire
左键单击P13引脚设置成GPIO_Output
调整栈大小,将栈大小设为大于2k
将事先准备好的flash.c 及flash.h加入到工程中(flash.h文件放在Inc文件夹下即可)
工程代码(无需密码):https://diyugreat.lanzouw.com/iJCBdy6bklc
在main.c中加入如下代码
使用stlink下载程序进行调试
驱动安装我以前装过了,所以这些自行参考商家资料即可。
打开keil,点击魔法棒。设置调试方式为stlink
点击完 setting后,你可能遇到版本问题,更新下即可。
显示图中方框内容就成功了,然后点击确定即可。
编译无误后,点击load,即可下载进芯片中
下载成功
注意:使用st-link和keil进行烧录会严格检查stm32型号,如果不是对应的型号烧录会报错。
进行调试
View->memory windows->memory 1打开内存观察窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容:
View->Watch windows->Watch 打开两个个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1和2 观察窗口
全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样了
此时,回到memory
断电,重新上电后再次调试,程序刚停在main入口处时还可以看到Flash对应区间的内容保持上一次写入内容值
四. 基于片内Flash的提示音播放程序
1. 使用DAC输出周期2khz的正弦波
- 使用Audition输出一个周期2khz的正弦波
菜单栏选择文件->新建->音频文件
设置相关采用频率
菜单栏点击效果 ->生成基本音色
设置完相关频率,点击确定
导出为wav文件,选择文件->导出->文件
- 使用UltraEdit得到相关数据
官网下载链接:Download UltraEdit text editor for Windows
用该软件打开刚才保存的wav文件
ctrl+A,接着鼠标右键,选择 十六进制复制选定视图,将内容粘贴到一个新建文件中
我们想要的只是中间的那一块内容。
在新建文件中,ctrl+A,接着鼠标右键,选择范围输入起始的行号和列号。
- 使用notepad++添加相关内容
下载地址:Notepad++ - Download (softonic.com)
打开该软件后,新建文件,然后将上面选中的内容复制粘贴到该软件中(在前面软件中,右键选择复制)
在需要添加内容的位置,alt+c 或者点击编辑—>列块编辑,按列块插入0x
和,
每列重复操作
最后效果(注意查看最后一行,因为可能最后一行内容少,我这里选择将最后一行去掉)
记得保存
打开野火例程dac输出,这里选用stm32f103指南针的
下载链接:[野火]《STM32库开发实战指南》系列 — 野火产品资料下载中心 文档 (embedfire.com)
打开bsp_dac.c,添加前面的16进制数据
最后编译,烧录进硬件中,就可以使用示波器观察了,这里因条件有限,就没有进行最后一步。
2. 使用DAC输出数字音频歌曲数据转换为模拟音频波形输出
用Audition打开一段音乐
选中一段,然后右键,选择存储选区,接着更改采用类型
接下来的操作与之前一样,使用UltraEdit、notepad++。
还是使用野火提供的样例程序——DAC输出正弦波即可。
最后编译,烧录进硬件中,就可以使用示波器观察了,这里因条件有限,就没有进行最后一步。
五. 参考链接
STM32 进阶教程 13 – FLASH的读写操作_张十三的博客-CSDN博客_stm32f103c8t6flash读写
STM32F103的DAC——输出声音效果_Harriet的博客-CSDN博客_stm32dac输出音频
[野火]《STM32库开发实战指南》系列 — 野火产品资料下载中心 文档 (embedfire.com)
基于stm32f103c8t6的flash的数据读取以及提示音播放程序相关推荐
- STM32F103基于片内flash的数据读取与音乐播放
目录 一.前言 二.题目要求 三.什么是片内flash 四.闪存的编程和擦除 五.基于flash的数据读取 1.工程创建 2.修改代码 3.烧录 4.调试 六.基于flash的提示音播放 1.生成正弦 ...
- android bmob获取数据,Android基于bmob后端云实现数据读取
最近在上手一个app作为练手,是关于失物招领的,其中要实现的一个功能是从云端读取数据展示在app的listview当中,其实这个功能挺常见的,不过这里还是拿来分享一下,主要介绍我解决的过程以及思路. ...
- c语言stm32串口控制单片机,基于STM32F103C8T6单片机电脑串口通讯控灯设计(原理图+程序+论文)...
题目:基于STM32F103C8T6单片机电脑串口通讯控灯设计 内容要求: 一. 任务 通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换.在现代工业控 ...
- 基于STM32F103C8T6的FLASH的DAC音频输出
目录 一.知识点 二.音频准备 2.1 生成wav文件 2.2 提取.wav文件十六进制 2.3 notepad++ 2.4 录制"您好欢迎光临 " 三.编写程序 3.1 写入FL ...
- 基于fpga 对sgm58031进行数据读取
最近项目上用到了sgm58031这款芯片,经过两天时间的调试,成功实现了对于该芯片的读取和相关配置. sgm58031是圣邦微的一款4通道输入ADC芯片,芯片地址为1001000,读操作为1,写操作为 ...
- 杰理之内置flash 提示音 播放暂停控制【篇】
- 基于 STM32F103C8T6 对音频数据的 Flash 读取与 DAC 播放
文章内容: STM32F103C8T6 的 Flash 地址空间的数据读取. STM32F103C8T6 自带的 DAC 通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还 ...
- STM32利用flash读取音频数据读取与DAC播放
目录 一.博客内容 二.Flash地址空间的读取 2.1 Flash原理 2.2 软.硬件准备 2.3 利用CubeMX建立工程 2.4 工程代码 2.5 ST-Link的使用 2.6 仿真调试 三 ...
- 音频数据的Flash读取与DAC的播放
文章目录 一.Flash地址空间的数据读取 1.Flash简介 内部 FLASH 的构成 2.建立工程 3.编辑代码 4.STlink调试仿真 二.基于片内Flash的提示音播放程序 1.使用DAC输 ...
最新文章
- 在maven项目中使用Junit进行单元测试(一)
- Combinations
- 《魂斗罗:归来》手游子弹中没中,没你想得那么简单!
- 更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
- 被指抄袭后 新浪微博APP绿洲更换Logo 重新上架
- svn 配置详解,以及各种可能遇到的问题
- 一个Python 爬虫程序
- 【高等数学笔记】拉格朗日乘数法(Lagrange Multiplier Method):其实也没那么难嘛
- 大数据讲课笔记5.5 MR案例——倒排索引
- android+发短信示例,【Android】如何实现Android发送短信(示例代码)
- Hubstudio指纹浏览器和YiLu代理(易路代理)的配置教程
- 海上风电消防火灾报警系统中消防主机超远距离联网方案
- win7 计算机无法搜索,Win7电脑搜索功能不能用的解决方法
- 固态硬盘计算机怎么自定义分区,如何设置SSD固态硬盘为主硬盘 怎样把SSD分区设置成主分区?...
- FireStart教程:基于SharePoint的出差报销流程一
- 一切没你想象那么糟,让你瞬间开心的30件小事
- 最短路径----狄克斯特拉 (digkstra)+邻接矩阵
- 石墨笔记,Onenote和Effie哪个适合SMZDM开箱评论者?
- WPS、office使用入坑心得
- lenovo thinkpad t460s trackpiont小红点移动速度调整
热门文章
- 比较两个对象 取最大值 并返回对象
- Windows Phone开发之应用商店
- python catia_CATIA Python接口:CATIA.SystemService.Evaluate
- 前端项目cnpm install时报错,Failed to connect to github.com port 443: Connection refused
- 我如何为家居装饰品牌建立最快的电子商务商店[PART 2]
- Linux之open()、close()函数
- 【直播数据分析】2022年 9月 最新抖音wss 分析
- 终于摸透了iPhone闹钟用法,别放那里浪费了
- Linux网络编程经典书籍推荐
- 转自-三聚氰胺的为什么都是奶业巨头呢_文伟_新浪博客