STM32的PWM和DAC练习
一、用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练习内容。