嵌入式十六周实验

目录

一、实验内容

二、 基于flash的数据读取

三、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通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还原效果;

二、 基于flash的数据读取

创建工程,选择芯片

 配置RCC,并且配置PC13为output对应板子上的LED

配置时钟 

 配置工程

生成代码。

 将flash.c和flash.h添加进工程,完整工程代码链接:百度网盘 
提取码:0809

 在main.c文件这些地方添加代码

#include "flash.h"

 

uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];
    uint8_t i;
	uint8_t FlashTest[] = "Hello I am diyu";

	FlashWriteBuff( DEVICE_INFO_ADDRESS, FlashTest,sizeof(FlashTest) );        // 写入数据到Flash
	
	for(i=0;i<255;i++)
		FlashWBuff[i] = i;
	
  FlashWriteBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest), FlashWBuff,255 );  // 写入数据到Flash
	FlashReadBuff(  DEVICE_INFO_ADDRESS + sizeof(FlashTest),FlashRBuff,255  );  // 从Flash中读取数

点击魔法棒进行设置

 

 编译无误后下栽进芯片

 image-20211231125754160

 点击debug进入调试,打开memor1窗口

 Periodic Windows Update开启变量自动更新

 打开watch1窗口

 将变量FlashWBuff 和 FlashRBuff加入到 Watch 1和2 观察窗口

全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样了image-20211231131148213 回到memor1

三、DAC音频播放

打开Audition,创建文件

 采样率2000Hz,声道单声道,位深度16位

 点击效果生成基本音色

 设置如下

导出文件 

 

打开软件WavToC,这是一个将WAV文件转化成C语言代码的文件,选择打开文件

在这里插入图片描述

 添加刚才的正弦信号生成的wav文件

 点击生成代码

 点击试听可以听到”嘟~“的声音

打开野火例程dac输出,在bsp_dac.c下的函数中,替换内容,就可以输出不同的波形

 没有示波器,最后一步波形效果图就下次再试了

四、总结

做了flash的读写和dac音频播放过后,学到了很多,临近期末事情也有一点多博客就写的随便一点了。

五、参考文献

STM32 进阶教程 13 – FLASH的读写操作_张十三的博客-CSDN博客_stm32f103c8t6flash读写

 STM32之flash的读写_m0_58414679的博客-CSDN博客

STM32之Flash读写操作_山有木兮-CSDN博客

基于stm32f103c8t6的flash的数据读取以及提示音播放程序_diyu-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值