久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3353|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

利用STM32的DMA產(chǎn)生正弦信號源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:661411 發(fā)表于 2019-12-11 11:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
利用STM32+DMA+TIM產(chǎn)生正弦信號

單片機(jī)源程序如下:
  1. #include "sign.h"
  2. u16 SineWave_Value[256];

  3. /********正弦波輸出表***********/
  4. //cycle        :波形表的位數(shù)        (0~256) 8位
  5. //Um                :輸出電壓的峰值(0~1.5)
  6. /*******************************/
  7. void SineWave_Data( u16 cycle ,u16 *D,float Um)
  8. {
  9.     u16 i;
  10.     for( i=0;i<cycle;i++)
  11.     {
  12.         D[i]=(u16)((Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)*4095/3.3);//+Um向上平移至0~2Um; 2^12=4096; 2^8=256; 單片機(jī)電壓3.3V
  13.     }
  14. }


  15. /****************初始化引腳******************/
  16. //----------------PA4輸出
  17. void SineWave_GPIO_Config(void)
  18. {
  19.     GPIO_InitTypeDef GPIO_InitStructure;
  20.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //開時鐘
  21.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;          //模擬輸出模式
  22.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //輸出速率
  23.     GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 ;            //選擇引腳 PA4
  24.     GPIO_SetBits(GPIOA,GPIO_Pin_4)  ;                      //拉高輸出
  25.     GPIO_Init(GPIOA, &GPIO_InitStructure);                 //初始化
  26. }

  27. /******************DAC初始化ˉ*************************/
  28. void SineWave_DAC_Config( void)
  29. {
  30.     DAC_InitTypeDef            DAC_InitStructure;
  31.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//開DAC時鐘
  32.      
  33.   /**************DAC結(jié)構(gòu)初始化*******************/
  34.         //使能DAC通道1和通道1的DMA
  35.     DAC_StructInit(&DAC_InitStructure);   
  36.     DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;//不產(chǎn)生波形
  37.     DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable; //不使能輸出緩存
  38.     DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;           //DAC觸發(fā)為定時器2觸發(fā)
  39.     DAC_Init(DAC_Channel_1, &DAC_InitStructure);                   //初始化
  40.     DAC_Cmd(DAC_Channel_1, ENABLE);                                //使能DAC的通道1
  41.     DAC_DMACmd(DAC_Channel_1, ENABLE);                             //使能DAC通道1的DMA  
  42. }

  43. /*********定時器初始化************/
  44. //定時器2初始化
  45. void SineWave_TIM_Config(u32 Wave1_Fre)
  46. {
  47.     TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
  48.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);           //開TIM2時鐘
  49.     TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  50.     TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                     //不預(yù)分頻
  51.     TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                 //不分頻<br>  
  52.           TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    //向上計數(shù)
  53.     TIM_TimeBaseStructure.TIM_Period = Wave1_Fre;                  //設(shè)置輸出頻率
  54.     TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  55.     TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);          //設(shè)置TIME輸出觸發(fā)為更新模式
  56. }

  57. /****************DMA配置******************/
  58. //DMA2配置
  59. void SineWave_DMA_Config(void)
  60. {                  
  61.     DMA_InitTypeDef            DMA_InitStructure;
  62.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);              //開啟DMA2時鐘
  63.      
  64.     DMA_StructInit( &DMA_InitStructure);                            //DMA結(jié)構(gòu)體初始化
  65.     DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;              //從寄存器讀數(shù)據(jù)
  66.     DMA_InitStructure.DMA_BufferSize = 256;                         //寄存器大小
  67.     DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外設(shè)地址不遞增
  68.     DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;         //內(nèi)存地址遞增
  69.     DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//寬度為半字
  70.     DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//寬度為半字
  71.     DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;            //優(yōu)先級非常高
  72.     DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                       //關(guān)閉內(nèi)存到內(nèi)存模式
  73.     DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                    //循環(huán)發(fā)送模式
  74.        
  75.                 DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1;            //外設(shè)地址為DAC通道1的地址
  76.                 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SineWave_Value;   //波形數(shù)據(jù)表內(nèi)存地址
  77.                 DMA_Init(DMA2_Channel3, &DMA_InitStructure);                       //初始化
  78.                 DMA_Cmd(DMA2_Channel3, ENABLE);                                    //使能DMA2的通道3      
  79.                
  80. }

  81. /**********正弦波初始化**********************/
  82. //Wave1_Fre:        頻率值(0~60 000)Hz
  83. //Um                         :        電壓峰值(0.0~1.5)V
  84. /*******************************************/

  85. void SineWave_Init(u16 Wave1_Fre,float Um)
  86. {
  87.         u32 f1;
  88.         f1=(u32)(72000000/sizeof(SineWave_Value)*2/Wave1_Fre);//計算頻率  72MHz
  89.         SineWave_Data(256,SineWave_Value,Um);     //生成輸出正弦波的波形表
  90.         SineWave_GPIO_Config();                   //初始化io
  91.         SineWave_TIM_Config(f1);                  //初始化定時器
  92.         SineWave_DAC_Config();                    //配置DAC
  93.         SineWave_DMA_Config();                    //配置DMA
  94.         TIM_Cmd(TIM2, ENABLE);                    //開啟定時器
  95. }
復(fù)制代碼

所有資料51hei提供下載:
利用DMA產(chǎn)生正弦信號.7z (185.76 KB, 下載次數(shù): 35)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天看天天操 | 日日干日日操 | 一级黄色录像毛片 | 国产精品久久久久久久久婷婷 | 久久国产亚洲 | 久久99精品久久久久 | 亚洲国产精品精华素 | 天天色图 | 亚洲劲爆av | 成人午夜精品 | 夜夜爽99久久国产综合精品女不卡 | 国产98色在线 | 日韩 | 国产精品综合色区在线观看 | 精品久久久久一区二区国产 | 久久精品国产亚洲 | 91麻豆精品国产91久久久久久久久 | 国产成人一区在线 | 国产精品久久免费观看 | 国产精品免费一区二区三区四区 | 色资源在线视频 | 91免费小视频| 久久综合久| 91在线观看视频 | 欧美成人猛片aaaaaaa | 亚洲电影专区 | 精品国产一区二区三区日日嗨 | 日韩av中文| 国产欧美在线观看 | 大学生a级毛片免费视频 | www久久久 | 91久色 | 中文字幕在线观看av | 日韩精品一区在线 | 国产欧美精品一区二区 | 久久中文免费视频 | 亚洲精品美女视频 | 日韩欧美一区二区三区免费观看 | 新超碰97 | 欧美日韩中文字幕 | 亚洲在线观看视频 | 亚洲三级在线观看 |