亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? stm32l1xx_dac.c

?? VS1003_MP3_SPI_SDHC_FAT32
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**
  ******************************************************************************
  * @file    stm32l1xx_dac.c
  * @author  MCD Application Team
  * @version V1.1.0
  * @date    24-January-2012
  * @brief   This file provides firmware functions to manage the following 
  *          functionalities of the Digital-to-Analog Converter (DAC) peripheral: 
  *          + DAC channels configuration: trigger, output buffer, data format
  *          + DMA management      
  *          + Interrupts and flags management

  * @verbatim      
  *   
 ===============================================================================
                        ##### DAC Peripheral features #####
 ===============================================================================
    [..] The device integrates two 12-bit Digital Analog Converters that can 
         be used independently or simultaneously (dual mode):
         (#) DAC channel1 with DAC_OUT1 (PA4) as output.
         (#) DAC channel2 with DAC_OUT2 (PA5) as output.
  
    [..] Digital to Analog conversion can be non-triggered using DAC_Trigger_None
         and DAC_OUT1/DAC_OUT2 is available once writing to DHRx register using 
         DAC_SetChannel1Data()/DAC_SetChannel2Data.
  
    [..] Digital to Analog conversion can be triggered by:
         (#) External event: EXTI Line 9 (any GPIOx_Pin9) using DAC_Trigger_Ext_IT9.
             The used pin (GPIOx_Pin9) must be configured in input mode.
         (#) Timers TRGO: TIM2, TIM4, TIM6, TIM7 and TIM9 
             (DAC_Trigger_T2_TRGO, DAC_Trigger_T4_TRGO...).
             The timer TRGO event should be selected using TIM_SelectOutputTrigger()
         (#) Software using DAC_Trigger_Software.
  
    [..] Each DAC channel integrates an output buffer that can be used to 
         reduce the output impedance, and to drive external loads directly
         without having to add an external operational amplifier.
         To enable, the output buffer use  
         DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
            
    [..] Refer to the device datasheet for more details about output impedance
         value with and without output buffer.
  
    [..] Both DAC channels can be used to generate:
         (#) Noise wave using DAC_WaveGeneration_Noise
         (#) Triangle wave using DAC_WaveGeneration_Triangle
  
    [..] Wave generation can be disabled using DAC_WaveGeneration_None.
  
    [..] The DAC data format can be:
         (#) 8-bit right alignment using DAC_Align_8b_R
         (#) 12-bit left alignment using DAC_Align_12b_L
         (#) 12-bit right alignment using DAC_Align_12b_R
  
    [..] The analog output voltage on each DAC channel pin is determined
         by the following equation: DAC_OUTx = VREF+ * DOR / 4095
         with  DOR is the Data Output Register.
         VEF+ is the input voltage reference (refer to the device datasheet)
         e.g. To set DAC_OUT1 to 0.7V, use
         DAC_SetChannel1Data(DAC_Align_12b_R, 868);
         Assuming that VREF+ = 3.3, DAC_OUT1 = (3.3 * 868) / 4095 = 0.7V.
  
    [..] A DMA1 request can be generated when an external trigger (but not
         a software trigger) occurs if DMA1 requests are enabled using
         DAC_DMACmd()
    [..] DMA1 requests are mapped as following:
         (#) DAC channel1 is mapped on DMA1 channel3 which must be already 
             configured.
         (#) DAC channel2 is mapped on DMA1 channel4 which must be already 
             configured.
  
                      ##### How to use this driver #####
 ===============================================================================
    [..]
        (+) DAC APB clock must be enabled to get write access to DAC registers using
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE)
        (+) Configure DAC_OUTx (DAC_OUT1: PA4, DAC_OUT2: PA5) in analog mode.
        (+) Configure the DAC channel using DAC_Init()
        (+) Enable the DAC channel using DAC_Cmd()

   @endverbatim
  *    
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * FOR MORE INFORMATION PLEASE READ CAREFULLY THE LICENSE AGREEMENT FILE
  * LOCATED IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE.
  *
  * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32l1xx_dac.h"
#include "stm32l1xx_rcc.h"

/** @addtogroup STM32L1xx_StdPeriph_Driver
  * @{
  */

/** @defgroup DAC 
  * @brief DAC driver modules
  * @{
  */ 

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* CR register Mask */
#define CR_CLEAR_MASK              ((uint32_t)0x00000FFE)

/* DAC Dual Channels SWTRIG masks */
#define DUAL_SWTRIG_SET            ((uint32_t)0x00000003)
#define DUAL_SWTRIG_RESET          ((uint32_t)0xFFFFFFFC)

/* DHR registers offsets */
#define DHR12R1_OFFSET             ((uint32_t)0x00000008)
#define DHR12R2_OFFSET             ((uint32_t)0x00000014)
#define DHR12RD_OFFSET             ((uint32_t)0x00000020)

/* DOR register offset */
#define DOR_OFFSET                 ((uint32_t)0x0000002C)

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/** @defgroup DAC_Private_Functions
  * @{
  */ 

/** @defgroup DAC_Group1 DAC channels configuration
 *  @brief   DAC channels configuration: trigger, output buffer, data format.
 *
@verbatim
 ===============================================================================
  ##### DAC channels configuration: trigger, output buffer, data format #####
 ===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Deinitializes the DAC peripheral registers to their default reset values.
  * @param  None
  * @retval None
  */
void DAC_DeInit(void)
{
  /* Enable DAC reset state */
  RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, ENABLE);
  /* Release DAC from reset state */
  RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, DISABLE);
}

/**
  * @brief  Initializes the DAC peripheral according to the specified 
  *         parameters in the DAC_InitStruct.
  * @param  DAC_Channel: the selected DAC channel.
  *   This parameter can be one of the following values:
  *     @arg DAC_Channel_1: DAC Channel1 selected.
  *     @arg DAC_Channel_2: DAC Channel2 selected.
  * @param  DAC_InitStruct: pointer to a DAC_InitTypeDef structure that
  *         contains the configuration information for the specified DAC channel.
  * @retval None
  */
void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct)
{
  uint32_t tmpreg1 = 0, tmpreg2 = 0;

  /* Check the DAC parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_DAC_TRIGGER(DAC_InitStruct->DAC_Trigger));
  assert_param(IS_DAC_GENERATE_WAVE(DAC_InitStruct->DAC_WaveGeneration));
  assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude));
  assert_param(IS_DAC_OUTPUT_BUFFER_STATE(DAC_InitStruct->DAC_OutputBuffer));

/*---------------------------- DAC CR Configuration --------------------------*/
  /* Get the DAC CR value */
  tmpreg1 = DAC->CR;
  /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */
  tmpreg1 &= ~(CR_CLEAR_MASK << DAC_Channel);
  /* Configure for the selected DAC channel: buffer output, trigger, wave generation,
     mask/amplitude for wave generation */
  /* Set TSELx and TENx bits according to DAC_Trigger value */
  /* Set WAVEx bits according to DAC_WaveGeneration value */
  /* Set MAMPx bits according to DAC_LFSRUnmask_TriangleAmplitude value */ 
  /* Set BOFFx bit according to DAC_OutputBuffer value */   
  tmpreg2 = (DAC_InitStruct->DAC_Trigger | DAC_InitStruct->DAC_WaveGeneration |
             DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude | DAC_InitStruct->DAC_OutputBuffer);
  /* Calculate CR register value depending on DAC_Channel */
  tmpreg1 |= tmpreg2 << DAC_Channel;
  /* Write to DAC CR */
  DAC->CR = tmpreg1;
}

/**
  * @brief  Fills each DAC_InitStruct member with its default value.
  * @param  DAC_InitStruct: pointer to a DAC_InitTypeDef structure which will 
  *         be initialized.
  * @retval None
  */
void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct)
{
/*--------------- Reset DAC init structure parameters values -----------------*/
  /* Initialize the DAC_Trigger member */
  DAC_InitStruct->DAC_Trigger = DAC_Trigger_None;
  /* Initialize the DAC_WaveGeneration member */
  DAC_InitStruct->DAC_WaveGeneration = DAC_WaveGeneration_None;
  /* Initialize the DAC_LFSRUnmask_TriangleAmplitude member */
  DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
  /* Initialize the DAC_OutputBuffer member */
  DAC_InitStruct->DAC_OutputBuffer = DAC_OutputBuffer_Enable;
}

/**
  * @brief  Enables or disables the specified DAC channel.
  * @param  DAC_Channel: The selected DAC channel. 
  *   This parameter can be one of the following values:
  *     @arg DAC_Channel_1: DAC Channel1 selected
  *     @arg DAC_Channel_2: DAC Channel2 selected
  * @param  NewState: new state of the DAC channel. 
  *      This parameter can be: ENABLE or DISABLE.
  * @note When the DAC channel is enabled the trigger source can no more
  *       be modified.
  * @retval None
  */
void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected DAC channel */
    DAC->CR |= (DAC_CR_EN1 << DAC_Channel);
  }
  else
  {
    /* Disable the selected DAC channel */
    DAC->CR &= (~(DAC_CR_EN1 << DAC_Channel));
  }
}

/**
  * @brief  Enables or disables the selected DAC channel software trigger.
  * @param  DAC_Channel: the selected DAC channel.
  *   This parameter can be one of the following values:
  *     @arg DAC_Channel_1: DAC Channel1 selected
  *     @arg DAC_Channel_2: DAC Channel2 selected
  * @param  NewState: new state of the selected DAC channel software trigger.
  *   This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable software trigger for the selected DAC channel */
    DAC->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4);
  }
  else
  {
    /* Disable software trigger for the selected DAC channel */
    DAC->SWTRIGR &= ~((uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4));
  }
}

/**
  * @brief  Enables or disables simultaneously the two DAC channels software
  *         triggers.
  * @param  NewState: new state of the DAC channels software triggers.
  *   This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void DAC_DualSoftwareTriggerCmd(FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable software trigger for both DAC channels */
    DAC->SWTRIGR |= DUAL_SWTRIG_SET;
  }
  else
  {
    /* Disable software trigger for both DAC channels */
    DAC->SWTRIGR &= DUAL_SWTRIG_RESET;
  }
}

/**
  * @brief  Enables or disables the selected DAC channel wave generation.
  * @param  DAC_Channel: the selected DAC channel.
  *   This parameter can be one of the following values:
  *     @arg DAC_Channel_1: DAC Channel1 selected
  *     @arg DAC_Channel_2: DAC Channel2 selected
  * @param  DAC_Wave: Specifies the wave type to enable or disable.
  *   This parameter can be one of the following values:
  *     @arg DAC_Wave_Noise: noise wave generation
  *     @arg DAC_Wave_Triangle: triangle wave generation
  * @param  NewState: new state of the selected DAC channel wave generation.
  *   This parameter can be: ENABLE or DISABLE.
  * @note   
  * @retval None
  */
void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_DAC_WAVE(DAC_Wave)); 
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected wave generation for the selected DAC channel */
    DAC->CR |= DAC_Wave << DAC_Channel;
  }
  else
  {
    /* Disable the selected wave generation for the selected DAC channel */
    DAC->CR &= ~(DAC_Wave << DAC_Channel);
  }
}

/**
  * @brief  Set the specified data holding register value for DAC channel1.
  * @param  DAC_Align: Specifies the data alignment for DAC channel1.
  *   This parameter can be one of the following values:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本在线高清不卡dvd| www激情久久| 94-欧美-setu| 成人综合婷婷国产精品久久蜜臀| 久久精品国产久精国产| 日本麻豆一区二区三区视频| 亚洲国产日韩av| 午夜精品影院在线观看| 首页亚洲欧美制服丝腿| 日本中文在线一区| 久久精品国产99国产精品| 黄色成人免费在线| 国产美女视频91| 福利一区二区在线观看| 成人国产视频在线观看| 色综合亚洲欧洲| 欧美性xxxxx极品少妇| 欧美久久免费观看| 日韩午夜激情av| 国产日产欧美一区| 国产精品乱子久久久久| 亚洲你懂的在线视频| 亚洲一区二区三区美女| 午夜精品一区二区三区免费视频 | 欧美综合色免费| 欧美中文字幕一区二区三区 | 国产亚洲精品超碰| 欧美激情一区二区三区不卡| 亚洲天堂福利av| 亚洲精品欧美二区三区中文字幕| 亚洲综合免费观看高清完整版在线| 亚洲午夜久久久久久久久久久| 日日摸夜夜添夜夜添亚洲女人| 蜜桃av噜噜一区二区三区小说| 国产精品一区2区| 91女厕偷拍女厕偷拍高清| 欧美午夜一区二区| 欧美一卡在线观看| 香港成人在线视频| 久久国产婷婷国产香蕉| 丰满白嫩尤物一区二区| 一本色道亚洲精品aⅴ| 337p亚洲精品色噜噜噜| 国产欧美va欧美不卡在线| 亚洲品质自拍视频| 美脚の诱脚舐め脚责91| 波多野结衣中文字幕一区二区三区| 日本精品一区二区三区四区的功能| 在线不卡一区二区| 久久久久久久久久美女| 亚洲午夜久久久久久久久电影院 | 国产一区二区三区免费在线观看| a美女胸又www黄视频久久| 欧美精品 日韩| 国产欧美一区二区精品性色| 亚洲图片欧美色图| 国产精品综合一区二区| 欧美四级电影在线观看| 久久人人97超碰com| 一二三区精品福利视频| 国产精品伊人色| 777午夜精品视频在线播放| 日本一区二区三区国色天香| 午夜精品久久久久久久| 福利一区二区在线| 欧美日韩一区不卡| 中文字幕制服丝袜一区二区三区| 麻豆精品在线观看| 色婷婷av一区二区三区软件| 欧美精品一区二区三区视频| 亚洲最大成人综合| 国产精品99久久久久久久vr| 911精品国产一区二区在线| 一区二区中文字幕在线| 久久成人综合网| 精品视频一区 二区 三区| 18欧美亚洲精品| 国产精品自拍网站| 日韩视频一区二区三区| 亚洲一区二区三区四区五区黄| 成人午夜av电影| 久久久亚洲国产美女国产盗摄| 日韩和欧美的一区| 欧美性大战久久久久久久蜜臀| 国产精品久久久久久久久搜平片 | 免费成人av在线| 欧美网站一区二区| 亚洲日本韩国一区| av中文字幕在线不卡| 国产午夜精品一区二区三区视频| 老司机免费视频一区二区| 欧美日韩精品电影| 亚洲午夜免费福利视频| 日本韩国一区二区| 亚洲精品视频一区二区| 色综合久久天天| 成人欧美一区二区三区视频网页| 成人午夜私人影院| 国产精品人人做人人爽人人添| 国产黄色精品网站| 久久美女艺术照精彩视频福利播放| 91小视频在线免费看| 亚洲欧洲日本在线| 99视频精品免费视频| 亚洲欧洲精品成人久久奇米网| 国产91精品免费| 亚洲国产激情av| eeuss鲁片一区二区三区在线观看| 国产精品色一区二区三区| 成人a级免费电影| 国产精品久久网站| 91视频精品在这里| 亚洲精品乱码久久久久| 欧美日韩一区中文字幕| 五月综合激情网| 欧美大黄免费观看| 国产在线视频精品一区| 国产亚洲精品资源在线26u| 成人午夜视频福利| 亚洲美女在线一区| 欧美精品自拍偷拍| 麻豆91免费观看| 国产午夜精品久久久久久免费视| 成人av午夜电影| 亚洲综合一区二区| 欧美一级日韩免费不卡| 国产在线一区二区| 亚洲视频一区在线| 欧美视频一区二区三区在线观看 | 91欧美激情一区二区三区成人| 一区二区三区精品| 欧美视频精品在线观看| 婷婷久久综合九色国产成人| 91精品国产全国免费观看| 国产精品77777| 国产精品素人视频| 91麻豆精品一区二区三区| 18涩涩午夜精品.www| 欧美在线播放高清精品| 极品少妇xxxx精品少妇偷拍| 国产亚洲人成网站| 99久久免费国产| 亚洲精品第1页| 在线一区二区三区| 亚洲成人1区2区| 欧美男同性恋视频网站| 日韩经典中文字幕一区| 欧美一区欧美二区| 国v精品久久久网| 亚洲色图清纯唯美| 精品视频在线免费| 极品少妇xxxx偷拍精品少妇| 久久噜噜亚洲综合| 99精品黄色片免费大全| 亚洲18女电影在线观看| 日韩免费高清av| 波多野结衣中文字幕一区二区三区| 午夜a成v人精品| 久久精品无码一区二区三区| 精品国产亚洲在线| 91在线观看视频| 久久电影网电视剧免费观看| 国产精品美女视频| 欧美日韩国产天堂| 国产成都精品91一区二区三| 婷婷一区二区三区| 国产蜜臀97一区二区三区| 欧美午夜精品久久久久久超碰| 麻豆精品一区二区三区| 久久亚洲一区二区三区四区| 欧美日韩精品一区视频| 国产成人免费视频一区| 亚洲成人精品在线观看| 国产欧美日韩视频在线观看| 欧美区在线观看| 国产+成+人+亚洲欧洲自线| 午夜天堂影视香蕉久久| 欧美国产成人精品| 欧美一区二区视频免费观看| 99视频有精品| 韩国成人精品a∨在线观看| 一区二区视频免费在线观看| 国产农村妇女精品| 欧美一区二区三区在线看| 色呦呦一区二区三区| 国产一区二区主播在线| 亚洲欧美日韩在线不卡| 国产女人水真多18毛片18精品视频| 精品污污网站免费看| av亚洲精华国产精华| 麻豆精品在线视频| 免费观看一级欧美片| 亚洲精品欧美专区| 精品久久久久99| 精品视频资源站| 99re视频精品| 成人一区二区三区在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 丝袜a∨在线一区二区三区不卡| 国产精品电影一区二区三区|