標(biāo)題: 迷你stm32可調(diào)頻率正弦波源程序 [打印本頁(yè)]

作者: 彌勒    時(shí)間: 2019-8-7 17:00
標(biāo)題: 迷你stm32可調(diào)頻率正弦波源程序
網(wǎng)上找了挺長(zhǎng)時(shí)間的可調(diào)正弦波程序,發(fā)現(xiàn)都比較復(fù)雜。這是通過(guò)修改的很容易理解的可調(diào)頻率正弦波

單片機(jī)源程序如下:
  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         //發(fā)送數(shù)據(jù)長(zhǎng)度,最好等于sizeof(TEXT_TO_SEND)+2的整數(shù)倍.

  10. u16 DAC_SIN_BUF[DAC_SIN_SIZE];  //發(fā)送數(shù)據(jù)緩沖區(qū)

  11. #define PI 3.1415962

  12. //產(chǎn)生正弦波函序列,根據(jù)DAC_SIN_SIZE生成。
  13. void dac_creat_sin_buf(void)
  14. {
  15.     u8 i;
  16.     float inc=2*PI/DAC_SIN_SIZE;        //計(jì)算增量(一個(gè)周期DAC_SIN_BUF個(gè)點(diǎn))
  17.     float outdata=0;
  18.     for(i=0;i<DAC_SIN_SIZE;i++)
  19.     {
  20.         outdata=2047*(1+sin(inc*i));    //計(jì)算以dots個(gè)點(diǎn)為周期的每個(gè)點(diǎn)的值,放大2048倍,并偏移到正數(shù)區(qū)域。
  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();                     //延時(shí)函數(shù)初始化          
  29.     //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  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,外設(shè)為串口1,存儲(chǔ)器為SendBuff,長(zhǎng)度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;//提示系統(tǒng)正在運(yùn)行       
  48.                         i=0;
  49.                 }                  
  50.         }
  51. }
復(fù)制代碼

所有資料51hei提供下載:
1khz正弦波.7z (197.52 KB, 下載次數(shù): 44)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1