一、用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) = 4095endend 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文件烧录到板子中去,将板子和示波器连接好,打开示波器便可观察到我们截取音乐片段的模拟音频波形。
一、用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) = 4095endend 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文件烧录到板子中去,将板子和示波器连接好,打开示波器便可观察到我们截取音乐片段的模拟音频波形。
举报