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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4358|回復: 0
收起左側

stm32dac輸出正弦波,python生產正弦波的數組

[復制鏈接]
ID:444014 發表于 2019-8-2 09:19 | 顯示全部樓層 |閱讀模式
0.png

單片機源程序如下:
  1. #include "./dac/bsp_dac.h"

  2. //正弦波單個周期的點數
  3. #define POINT_NUM 32

  4. /* 波形數據 ---------------------------------------------------------*/
  5. const uint16_t Sine12bit[POINT_NUM] = {
  6.         2048        , 2460        , 2856        , 3218        , 3532        , 3786        , 3969        , 4072        ,
  7.         4093        , 4031        , 3887        , 3668        , 3382        , 3042        ,        2661        , 2255        ,
  8.         1841        , 1435        , 1054        , 714                , 428                , 209                , 65                , 3                        ,
  9.         24                , 127                , 310                , 564                , 878                , 1240        , 1636        , 2048
  10. };


  11. uint32_t DualSine12bit[POINT_NUM];


  12. /**
  13.   * @brief  使能DAC的時鐘,初始化GPIO
  14.   * @param  無
  15.   * @retval 無
  16.   */
  17. static void DAC_Config(void)
  18. {
  19.   GPIO_InitTypeDef GPIO_InitStructure;
  20.         DAC_InitTypeDef  DAC_InitStructure;

  21.   /* 使能GPIOA時鐘 */
  22.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);       
  23.        
  24.         /* 使能DAC時鐘 */       
  25.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
  26.        
  27.   /* DAC的GPIO配置,模擬輸入 */
  28.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;
  29.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  30.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  31.        


  32.   /* 配置DAC 通道1 */
  33.   DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;                                                //使用TIM2作為觸發源
  34.   DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;        //不使用波形發生器
  35.   DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;        //不使用DAC輸出緩沖
  36.   DAC_Init(DAC_Channel_1, &DAC_InitStructure);

  37.   /* 配置DAC 通道2 */
  38.   DAC_Init(DAC_Channel_2, &DAC_InitStructure);

  39.   /* 使能通道1 由PA4輸出 */
  40.   DAC_Cmd(DAC_Channel_1, ENABLE);
  41.   /* 使能通道2 由PA5輸出 */
  42.   DAC_Cmd(DAC_Channel_2, ENABLE);

  43.   /* 使能DAC的DMA請求 */
  44.   DAC_DMACmd(DAC_Channel_2, ENABLE);
  45. }


  46. /**
  47.   * @brief  配置TIM
  48.   * @param  無
  49.   * @retval 無
  50.   */
  51. static void DAC_TIM_Config(void)
  52. {
  53.        
  54.         TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
  55.        
  56.         /* 使能TIM2時鐘,TIM2CLK 為72M */
  57.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  58.        
  59.   /* TIM2基本定時器配置 */
  60. // TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  61.   TIM_TimeBaseStructure.TIM_Period = (2250-1);                                                                               //定時周期 20  
  62.   TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                                                               //預分頻,不分頻 72M / (0+1) = 72M
  63.   TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                    //時鐘分頻系數
  64.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;          //向上計數模式
  65.   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  66.   /* 配置TIM2觸發源 */
  67.   TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

  68.         /* 使能TIM2 */
  69.   TIM_Cmd(TIM2, ENABLE);

  70. }

  71. /**
  72.   * @brief  配置DMA
  73.   * @param  無
  74.   * @retval 無
  75.   */
  76. static void DAC_DMA_Config(void)
  77. {       
  78.         DMA_InitTypeDef  DMA_InitStructure;

  79.         /* 使能DMA2時鐘 */
  80.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
  81.        
  82.         /* 配置DMA2 */
  83.   DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_ADDRESS;                                        //外設數據地址
  84.   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit ;                                //內存數據地址 DualSine12bit
  85.   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                                                                        //數據傳輸方向內存至外設
  86.   DMA_InitStructure.DMA_BufferSize = POINT_NUM;                                                                                                                                        //緩存大小為POINT_NUM字節       
  87.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                                //外設數據地址固定       
  88.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                                        //內存數據地址自增
  89.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;        //外設數據以字為單位
  90.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;                                        //內存數據以字為單位       
  91.   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                                                                        //循環模式
  92.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                                                        //高DMA通道優先級
  93.   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                                                                                //非內存至內存模式       

  94.   DMA_Init(DMA2_Channel4, &DMA_InitStructure);
  95.        
  96.   /* 使能DMA2-14通道 */
  97.   DMA_Cmd(DMA2_Channel4, ENABLE);
  98. }


  99. /**
  100.   * @brief  DAC初始化函數
  101.   * @param  無
  102.   * @retval 無
  103.   */
  104. void DAC_Mode_Init(void)
  105. {
  106.         uint32_t Idx = 0;  

  107.         DAC_Config();
  108.         DAC_TIM_Config();       
  109.        
  110.         /* 填充正弦波形數據,雙通道右對齊*/
  111.   for (Idx = 0; Idx < POINT_NUM; Idx++)
  112.   {
  113.     DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
  114.   }
  115.        
  116.         DAC_DMA_Config();
  117. }
復制代碼

所有資料51hei提供下載:
DAC—輸出正弦波.rar (294.27 KB, 下載次數: 65)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久影院色老大 | 国产精品久久国产精品 | 久久大| 亚洲在线看 | 亚洲视频在线播放 | 一区二区三区视频在线观看 | 伊人青青久久 | 国产福利视频 | 久久精品国产一区二区电影 | 在线精品一区二区三区 | 亚洲高清在线 | 97伦理电影| 免费精品视频 | 羞羞色网站 | 日韩免费高清视频 | 91精品国产91久久久久久最新 | 韩国欧洲一级毛片 | 国产成人精品在线 | 国产在线一区二区三区 | 日韩精品一区二区三区四区 | 久久黄网 | 亚洲欧洲日本国产 | 亚洲精品福利在线 | 国产精品久久久久久吹潮 | 国产视频一区在线 | 亚洲成人一区二区三区 | 欧美国产亚洲一区二区 | 国产视频1区| av一级| 一区二区在线 | 99re66在线观看精品热 | 日韩av一区二区在线观看 | 亚洲一区二区视频 | 91久久精品国产91久久性色tv | 亚洲一区中文字幕 | 久久国产精品-久久精品 | 天堂一区二区三区 | 欧美一级在线 | 久久男人 | 国产日产欧产精品精品推荐蛮挑 | 四虎影院在线免费观看 |