STM32的PWM和DAC练习

本文详细介绍了如何使用STM32F103进行PWM波形输出和DAC功能实现正弦波及音频歌曲的模拟波形输出。通过配置定时器和GPIO,输出PWM波形,并通过调整参数生成2kHz正弦波。接着,利用Audition、UltraEdit和notepad++处理音频文件,将其转换为适合STM32 DAC播放的格式,最后通过烧录程序实现音频播放。过程中涉及代码修改、数据优化及错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、用STM32F103输出一路PWM波形

1、打开野火资料的程序源码,找到32-TIM—通用定时器,这个文件里有4路PWM输出的程序
在这里插入图片描述
2、打开相应工程文件
在这里插入图片描述
3、打开bsp_GeneralTim.c文件,找到输出比较通道GPIO初始化部分,把通道2、3、4都注释掉,
在这里插入图片描述
4、下滑,同样把这部分的通道2、3、4注释掉
在这里插入图片描述
5、开发板通过转串口连接到电脑上,编译通过后烧录到开发板中

6、示波器探头接触开发板的PA4,另一端接地,可以在示波器看到如下PWM输出波形。
在这里插入图片描述

二、用STM32F103的DAC功能完成以下波形输出

(一)输出一个周期2khz的正弦波

1、在野火资料中找到程序源码的 38-DAC—输出正弦波
在这里插入图片描述
2、打开相应工程
在这里插入图片描述
3、找到bsp_dac.c文件,找到TIM2基本定时器配置部分,为了输出2khz正弦波,把箭头所指的定时周期从(20-1)改为(1125-1)
在这里插入图片描述
4、编译并配置成功后把程序烧录到开发板

5、用示波器探头接开发板的PA4,另一端接地,可以在示波器中观测到如下正弦波。
在这里插入图片描述

上图右上角可以明显看到此时正弦波频率为2KHz。

6、使用蜂鸣器分别连接PA4和GND可以听到微弱的“滴…”的声音。

(二)将一段数字音频歌曲数据转换为模拟音频波形输出

1、以下操作首先需要安装三个软件:Audition、UltraEdit、notepad++。
安装包: STM32的DAC练习资料.
提取码:yaax
2、安装完成后,首先准备一首歌或者歌曲片段,然后打开Audition,点击多轨混音,新建项目
在这里插入图片描述
3、多轨混音的采样率选择8KHz,位深度选择16Bit,单通道
在这里插入图片描述
4、导入音乐,把导入的音乐拖到轨道中
在这里插入图片描述
在这里插入图片描述
5、使用 选择素材剃刀工具 截取你想要的片段,音频长度建议不超过2秒
在这里插入图片描述

  选择剃刀工具后,在需要的片段前后点击以下,然后切换成移动工具,选中不需要片段,按Delete键删除,再把剩下的片段拖到前面。
  结果如下:

在这里插入图片描述
6、截取完成后鼠标选中这段音频,右键->导出混音->完整混音
在这里插入图片描述
7、导出的文件格式选择wav格式,采样和格式保持刚刚的选择
在这里插入图片描述
8、文件导出成功后,使用UltraEdit软件打开刚刚的wav文件,效果如下
在这里插入图片描述
在这里插入图片描述
9、快捷键Ctrl+A快速全选,右键->十六进制复制所选视图,复制完成后新建文件,粘贴
在这里插入图片描述
10、滑到底查看文件行数,可以看到我这里有2032行,然后右键->选择范围
在这里插入图片描述
11、行号从1到最后一行,列号12-59,结果如下:
在这里插入图片描述
在这里插入图片描述
12、复制所选内容,再新建一个新文件,粘贴进去,保存
在这里插入图片描述
13、用notepad++打开上面保存文件,点击右上角编辑–>列块编辑
在这里插入图片描述

tips:列快编辑按列插入,且光标位于什么地方,文本就插入到什么地方。

14、插入文本第一列插入文本“0x”,其后为“,0x”,最后一列插入逗号
在这里插入图片描述
15、最终结果如下
在这里插入图片描述
16、把以上生成的内容全部粘贴到bsp_dac.c文件的波形数据部分,同时修改正弦波单个周期点数,使其大小足够存储这么多数据,如下:
在这里插入图片描述

如果出现以下错误,就是芯片内存空间不足,
在这里插入图片描述
解决办法:点击魔术棒->C/C++,把优化等级从Level 0调至Leval 2,优化等级越高程序优化的越多;如果还是行不通,只能把你的数据删减掉一部分,使数据能存储。
在这里插入图片描述

17、我的内存空间不允许我存储我粘贴的所有数据,最大为15500,那么把多余的数据删掉或注释,编译通过
在这里插入图片描述
18、把程序烧录到开发板中,用蜂鸣器分别连接开发板PA4和GND,可以听到音乐。

总结

  以上就是STM32的PWM和DAC练习内容。

参考

STM32F103使用TIM DMA DAC实现播放WAV音乐.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值