STM32的PWM和DAC练习

一、用STM32F103输出一路PWM波形

1、打开下载好的工程文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、编译生成HEX文件
在这里插入图片描述
3、之后我们将生成的HEX文件烧录到stm32板子中,之后将板子连接示波器,输出效果:

在这里插入图片描述

二、用STM32的DAC功能完成波形输出

(1)STM32F103的DAC功能输出一个周期2khz的正弦波

因为我们需要输出正弦波,而计算机只能够识别一个一个的点,所以我们需要先对正弦波进行采样,取出一定的点放到数组中,再去执行输出代码。我在这里采用Matlab进行采样点的获取。

1、首先我们找到野火配套资料里的 38-DAC—输出正弦波 工程文件,将其打开,找到如下文件,用matlab打开:
在这里插入图片描述
2、将程序修改一下
在这里插入图片描述
3、将代码修改如下:

%用于产生正弦数据表,输出到文件dac_sinWave.c 文件中,复制到c语言数组即可

n = 2*pi/3600 : 2*pi/3600 : 2*pi      %分成3600等份

a = sin(n)+1;                     %求取sin函数值并向上平移一个单位,消除负数值
a = a * 3.3/2;                    %调整幅值,使范围限制为0~3.3   
r = a* (2.^12) /3.3               %求取dac数值,12位dac LSB = 3.3/2.^12 
r = uint16(r);                     %把double型数据转化成16位整型数据 

for i = 1:32                        
if r(i) > 4095                      %限制数据最大不超过4095
    r(i) = 4095
end
end 

dlmwrite('dac_sinWave.c',r);      %把数据写入到文件,方便添加到stm32工程中
plot(n,r,'.')                     %把这些点画出来 

4、运行修改之后的脚本,便会生成3600个取样点,将这些取样点全部复制下来。
在这里插入图片描述
5、然后打开 DAC-输出正弦波 的工程keil文件
在这里插入图片描述
6、将复制的全部粘贴到 uint16_t Sine12bit 数组中:
在这里插入图片描述
7、然后对main函数进行编译生成hex文件,之后将hex文件烧录到板子中,将板子与示波器连接,示波器显示如图:
在这里插入图片描述
8、连接上蜂鸣器
在这里插入图片描述
连接好后,就可以让蜂鸣器发出声音。

(2)用STM32F103的DAC功能将一段数字音频歌曲数据转换为模拟音频波形输出

1、首先我们打开 Adobe Audition 软件,在里面选择我们之前电脑上下载的一首歌曲进行打开,得到如下界面:
在这里插入图片描述
2、截取其中一小段
在这里插入图片描述
在这里插入图片描述
3、用下载的UltraEdit软件打开这个wav文件
在这里插入图片描述
打开后如下:
在这里插入图片描述
4、全选,然后选择十六进制复制试图,然后新建一个文件,再粘贴上去
在这里插入图片描述
5、全选,然后选择“选择范围”
在这里插入图片描述
列号选择12到59
在这里插入图片描述
在这里插入图片描述
6、打开 notepad++ 软件,将以上复制的内容粘贴进去,在其中插入 ,0x 生成如下文件:
在这里插入图片描述
7、打开刚刚的正弦波工程文件,然后将文本复制进uint16_t Sine12bit[]数组中去
在这里插入图片描述
8、然后生成的hex文件烧录到板子中去,将板子和示波器连接好,打开示波器便可观察到我们截取音乐片段的模拟音频波形:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值