OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5944|回复: 10

STM32 DAC输出正弦波,求教

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2018-1-17
在线时间
3 小时
发表于 2018-1-17 14:59:00 | 显示全部楼层 |阅读模式
1金钱
#define PI 3.1415962

//输出正弦波函数
void sin_out(u8 dots)
{
    u8 i;
    u16 buf[255];
    float inc=2*PI/dots;    //计算增量(一个周期dots个点)
    float outdata=0;

       
        for(i=0;i<dots;i++)
    {
        outdata=2047*(1+sin(inc*i));    //计算以dots个点为周期的每个点的值,放大2048倍,并偏移到正数区域。
        printf("%f\r\n",outdata);
        buf=outdata;
    }
    while(1)                //不停的产生正弦波
    {
        for(i=0;i<dots;i++)
        {
            DAC->DHR12R1=buf;
        }
    }
}
这段是什么意思啊

最佳答案

查看完整内容[请看2#楼]

老铁,不是备注的很清楚嘛?先产生一个周期的正弦波,然后while(1)里面是一直产生正弦波
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

227

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3096
金钱
3096
注册时间
2016-4-15
在线时间
350 小时
发表于 2018-1-17 14:59:01 | 显示全部楼层
老铁,不是备注的很清楚嘛?先产生一个周期的正弦波,然后while(1)里面是一直产生正弦波
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2018-1-17 15:01:59 | 显示全部楼层
应该使用定时器+DMA+ADC更加合理吧
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2018-1-17
在线时间
3 小时
 楼主| 发表于 2018-1-17 15:11:51 | 显示全部楼层
操作系统 发表于 2018-1-17 15:01
应该使用定时器+DMA+ADC更加合理吧

只是一个小测试,就让用dac。
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-1-17 15:59:42 | 显示全部楼层
这个程序从哪抄的,STM32没有sin();这个函数的运算功能吧!应该是查表发吧!
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-1-17 16:00:54 | 显示全部楼层
这个程序从哪抄的,STM32没有sin();这个函数的运算功能吧!应该是查表发吧!
回复

使用道具 举报

36

主题

227

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3096
金钱
3096
注册时间
2016-4-15
在线时间
350 小时
发表于 2018-1-17 16:05:52 | 显示全部楼层
jinfeihan57 发表于 2018-1-17 16:00
这个程序从哪抄的,STM32没有sin();这个函数的运算功能吧!应该是查表发吧!

math.h里面不是有吗?这个历程是原子给的。我见过
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2018-1-17 22:09:43 | 显示全部楼层
jinfeihan57 发表于 2018-1-17 15:59
这个程序从哪抄的,STM32没有sin();这个函数的运算功能吧!应该是查表发吧!

sin()是正弦函数,cos()是余弦函数,在math.h中有
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-1-18 10:34:33 | 显示全部楼层
八度空间 发表于 2018-1-17 22:09
sin()是正弦函数,cos()是余弦函数,在math.h中有

我搞错了,不好意思。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-11-27
在线时间
2 小时
发表于 2019-12-3 19:36:05 | 显示全部楼层
我想弱弱的问一句,为什么要乘以2047呢,刚接触STM32没过久,请原谅我的无知
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-12-15
在线时间
1 小时
发表于 2019-12-15 20:21:49 | 显示全部楼层
这个例程可以提供下吗 谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 00:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表