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

一、创建STM32CUBEMX工程

芯片选择F103C8
在这里插入图片描述
配置定时器
在这里插入图片描述
打开外部时钟
请添加图片描述
配置时钟请添加图片描述
配置PC13为output对应板子上的LED请添加图片描述
设置堆栈大小为4K,导出请添加图片描述

二、KEIL下的配置

将flash.c 和flash.h添加到工程中
在这里插入图片描述
在main.c文件中添加flash.h头文件
并定义两个变量数组
请添加图片描述
请添加图片描述
在main函数中添加以下代码

/* USER CODE BEGIN 1 */
	uint8_t i;
	uint8_t FlashTest[] = "Hello This is a Flash Test DEMO";

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
	
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中读取数

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

编译
DEBUG下选择STlink请添加图片描述
将程序下载到单片机中请添加图片描述

请添加图片描述
下载完成请添加图片描述
点击进入debug,在view下打开memory1窗口请添加图片描述
打开watch1窗口请添加图片描述
Periodic Windows Update开启变量自动更新
请添加图片描述
将变量FlashWBuff 和 FlashRBuff加入到 Watch1请添加图片描述
在memory1中输入要观察的地址0x800c000请添加图片描述
运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样请添加图片描述
定义好的句子写到了地址0x0800c000中了请添加图片描述

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

1、获取正弦信号
点击左上角的文件,新建,音频文件,采样率2000Hz,声道单声道,位深度16位
请添加图片描述
点击效果,生成,音调请添加图片描述
设置如下请添加图片描述
点击文件,导出,文件
在这里插入图片描述
格式设置如下
请添加图片描述
完成
二、截取音乐中的音频
随便找一首音乐,点击截取一段音频请添加图片描述
右键,点击存储选取,点击更改,配置如下请添加图片描述
点击确定,完成

打开软件WavToC,这是一个将WAV文件转化成C语言代码的文件
点击右下角的打开文件请添加图片描述
选择我们刚才生成的wav文件
请添加图片描述
点击生成代码,便自动生成出代码
请添加图片描述
请添加图片描述
可以点击试听,试一试是不是正确的声音,正弦波会发出嘟的声音
打开mdk文件在bsp_dac.c下的函数中,替换内容,就可以输出不同的波形。
请添加图片描述

四、参考文章

https://blog.csdn.net/qq_46467126/article/details/122098829?spm=1001.2014.3001.5501
https://blog.csdn.net/weixin_52288941/article/details/122147152?spm=1001.2014.3001.5501

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值