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

一、Flash地址空间的数据读取

1.工程的建立

使用STM32CubeMX进行配置,重要配置如下:
SYS

在这里插入图片描述
RCC
在这里插入图片描述
引脚配置
在这里插入图片描述
在这里插入图片描述

时钟配置
在这里插入图片描述
堆栈大小
在这里插入图片描述

2.修改代码

main.c
在这里插入图片描述

在这里插入图片描述
并添加如下代码:

/* 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 */

编译无错误
在这里插入图片描述

3.调试

添加变量观测窗口,并添加FlashWBuff,FlashRBuff变量
在这里插入图片描述
全速运行

4.结果

在这里插入图片描述

二、Flash的提示音播放程序

1. 使用DAC输出周期2khz的正弦波

新建一个音频文件
在这里插入图片描述
效果-生成-音调
在这里插入图片描述
效果-生成基本音色
在这里插入图片描述
导出为wav文件
在这里插入图片描述
用DAC将数字音频歌曲转换为模拟音频波形输出
在这里插入图片描述

三、总结

本实验通过DAC或PCM音频模块能够基本还原出原始正弦波声音,并还原了音频播放任务。让我在过程中收获较多。

四、参考文献

https://blog.csdn.net/pink_lemon/article/details/122232886

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

一、Flash地址空间的数据读取

1.工程的建立

使用STM32CubeMX进行配置,重要配置如下:
SYS

在这里插入图片描述
RCC
在这里插入图片描述
引脚配置
在这里插入图片描述
在这里插入图片描述

时钟配置
在这里插入图片描述
堆栈大小
在这里插入图片描述

2.修改代码

main.c
在这里插入图片描述

在这里插入图片描述
并添加如下代码:

/* 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 */

编译无错误
在这里插入图片描述

3.调试

添加变量观测窗口,并添加FlashWBuff,FlashRBuff变量
在这里插入图片描述
全速运行

4.结果

在这里插入图片描述

二、Flash的提示音播放程序

1. 使用DAC输出周期2khz的正弦波

新建一个音频文件
在这里插入图片描述
效果-生成-音调
在这里插入图片描述
效果-生成基本音色
在这里插入图片描述
导出为wav文件
在这里插入图片描述
用DAC将数字音频歌曲转换为模拟音频波形输出
在这里插入图片描述

三、总结

本实验通过DAC或PCM音频模块能够基本还原出原始正弦波声音,并还原了音频播放任务。让我在过程中收获较多。

四、参考文献

https://blog.csdn.net/pink_lemon/article/details/122232886

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

生成海报
点赞 0

小罗de社区

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

暂无评论

发表评论

相关推荐

将音频编解码器添加到嵌入式系统的 5 个技巧

嵌入式系统播放音频的能力正在成为一个相当普遍的功能。音频为用户提供了很好的反馈,但如今有如此多的高保真音频可用,使用哔哔声和啁啾声不再削减它。开发人员当然可以使用分立组件和 DAC 从系统中获得不错的音频&#xff0