找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2398|回复: 0
打印 上一主题 下一主题
收起左侧

迷你stm32可调频率正弦波源程序

[复制链接]
跳转到指定楼层
楼主
ID:587290 发表于 2019-8-7 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
网上找了挺长时间的可调正弦波程序,发现都比较复杂。这是通过修改的很容易理解的可调频率正弦波

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"         
  5. #include "math.h"         
  6. #include "dma.h"
  7. #include "dac.h"
  8. #include "timer.h"



  9. #define DAC_SIN_SIZE    100         //发送数据长度,最好等于sizeof(TEXT_TO_SEND)+2的整数倍.

  10. u16 DAC_SIN_BUF[DAC_SIN_SIZE];  //发送数据缓冲区

  11. #define PI 3.1415962

  12. //产生正弦波函序列,根据DAC_SIN_SIZE生成。
  13. void dac_creat_sin_buf(void)
  14. {
  15.     u8 i;
  16.     float inc=2*PI/DAC_SIN_SIZE;        //计算增量(一个周期DAC_SIN_BUF个点)
  17.     float outdata=0;
  18.     for(i=0;i<DAC_SIN_SIZE;i++)
  19.     {
  20.         outdata=2047*(1+sin(inc*i));    //计算以dots个点为周期的每个点的值,放大2048倍,并偏移到正数区域。
  21.         printf("%f\r\n",outdata);
  22.         DAC_SIN_BUF[i]=outdata;
  23.     }  
  24. }

  25. int main(void)
  26. {         
  27.     u8 i=0;
  28.     delay_init();                     //延时函数初始化          
  29.     //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  30.     uart_init(115200);                 //串口初始化为115200
  31.         LED_Init();                                  //初始化与LED连接的硬件接口
  32.      
  33.     TIM3_Int_Init(720,0);//最大为72KHZ
  34.     dac_creat_sin_buf();
  35.     Dac1_Init();
  36.         DAC_DMA_Config(DMA1_Channel3,(u32)&DAC->DHR12R1,(u32)DAC_SIN_BUF,DAC_SIN_SIZE);//DMA1通道4,外设为串口1,存储器为SendBuff,长度SEND_BUF_SIZE.
  37.         TIM3->DIER|=1<<8;
  38.     MYDMA_Enable(DMA1_Channel3);
  39.      
  40.    
  41.         while(1)
  42.         {   
  43.                 i++;
  44.                 delay_ms(10);
  45.                 if(i==20)
  46.                 {
  47.                         LED0=!LED0;//提示系统正在运行       
  48.                         i=0;
  49.                 }                  
  50.         }
  51. }
复制代码

所有资料51hei提供下载:
1khz正弦波.7z (197.52 KB, 下载次数: 44)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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