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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2029|回復: 0
打印 上一主題 下一主題
收起左側

STM32的AD部分源碼 bsp / DMA 模式

[復制鏈接]
跳轉到指定樓層
樓主
ID:406912 發表于 2018-10-9 10:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我的DAC部分軟件

單片機源程序:
  1. /**
  2.   ******************************************************************************
  3.   * @file    bsp_xxx.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   adc1 應用bsp / DMA 模式

  8.   */
  9.   
  10. #include "bsp_dac.h"

  11. #define DAC_DHR12RD_Address      0x40007420 //0x40007420

  12. /* 波形數據 ---------------------------------------------------------*/
  13. const uint16_t Sine12bit[32] = {
  14.         2448,2832,3186,3496,3751,3940,4057,4095,4057,3940,
  15.         3751,3496,3186,2832,2448,2048,1648,1264,910,600,345,
  16.         156,39,0,39,156,345,600,910,1264,1648,2048
  17. };


  18. uint32_t DualSine12bit[32];


  19. /**
  20.   * @brief  使能DAC的時鐘,初始化GPIO
  21.   * @param  無
  22.   * @retval 無
  23.   */
  24. static void DAC_Config(void)
  25. {
  26.   GPIO_InitTypeDef GPIO_InitStructure;
  27.         DAC_InitTypeDef  DAC_InitStructure;

  28.   /* 使能GPIOA時鐘 */
  29.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);       
  30.        
  31.         /* 使能DAC時鐘 */       
  32.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
  33.        
  34.   /* DAC的GPIO配置,模擬輸入 */
  35.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;
  36.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  37.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  38.        


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

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

  46.   /* 使能通道1 由PA4輸出 */
  47.   DAC_Cmd(DAC_Channel_1, ENABLE);
  48.   /* 使能通道2 由PA5輸出 */
  49.   DAC_Cmd(DAC_Channel_2, ENABLE);

  50.   /* 使能DAC的DMA請求 */
  51.   DAC_DMACmd(DAC_Channel_2, ENABLE);
  52. }


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

  73.   /* 配置TIM2觸發源 */
  74.   TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

  75.         /* 使能TIM2 */
  76.   TIM_Cmd(TIM2, ENABLE);

  77. }

  78. /**
  79.   * @brief  配置DMA
  80.   * @param  無
  81.   * @retval 無
  82.   */
  83. static void DAC_DMA_Config(void)
  84. {       
  85.         DMA_InitTypeDef  DMA_InitStructure;

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

  101.   DMA_Init(DMA2_Channel4, &DMA_InitStructure);
  102.        
  103.   /* 使能DMA2-14通道 */
  104.   DMA_Cmd(DMA2_Channel4, ENABLE);
  105. }


  106. /**
  107.   * @brief  DAC初始化函數
  108.   * @param  無
  109.   * @retval 無
  110.   */
  111. void DAC_Mode_Init(void)
  112. {
  113.         uint32_t Idx = 0;  

  114.         DAC_Config();
  115.         DAC_TIM_Config();
  116.         DAC_DMA_Config();
  117.        
  118.         /* 填充正弦波形數據,雙通道右對齊*/
  119.   for (Idx = 0; Idx < 32; Idx++)
  120.   {
  121.     DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
  122.   }
  123. }
復制代碼

所有資料51hei提供下載:
我的DAC.rar (278.86 KB, 下載次數: 7)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品视频在线 | 欧美高清一级片 | 狠狠综合久久av一区二区小说 | 久久久国产视频 | 99热碰 | 精品乱码久久久久 | 日韩欧美高清 | 欧美综合久久 | av在线免费观看网址 | 一区视频 | 五月天综合影院 | 国产精品久久一区二区三区 | 亚洲一区免费视频 | 免费在线看黄视频 | 成人精品鲁一区一区二区 | 欧美日韩视频在线播放 | 久久久不卡网国产精品一区 | 国产精品视频在线免费观看 | 成人精品视频99在线观看免费 | 成人午夜精品 | 国产在线观看不卡一区二区三区 | 国产一区二区三区免费观看在线 | 中文一区二区 | 国产成人91视频 | 欧美在线亚洲 | 狠狠骚| 7777精品伊人久久精品影视 | 亚洲 精品 综合 精品 自拍 | 男人天堂999 | 黄片毛片 | 色婷婷精品久久二区二区蜜臂av | 亚洲欧美日本国产 | 99re免费 | 成年人免费在线视频 | 一区二区av | 亚洲日韩中文字幕一区 | 亚洲人成在线播放 | 久热国产在线 | 天天看天天操 | va精品 | 久久首页|