基于stm32f103c8t6的flash的数据读取以及提示音播放程序
2021/12/31 14:08:20
本文主要是介绍基于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的数据读取以及提示音播放程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用