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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stm32f10x_dac.c

?? STM32+Grlib
?? C
?? 第 1 頁 / 共 2 頁
字號:
  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.
  * @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:
  *     @arg DAC_Align_8b_R: 8bit right data alignment selected
  *     @arg DAC_Align_12b_L: 12bit left data alignment selected
  *     @arg DAC_Align_12b_R: 12bit right data alignment selected
  * @param  Data : Data to be loaded in the selected data holding register.
  * @retval None
  */
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
{  
  __IO uint32_t tmp = 0;
  
  /* Check the parameters */
  assert_param(IS_DAC_ALIGN(DAC_Align));
  assert_param(IS_DAC_DATA(Data));
  
  tmp = (uint32_t)DAC_BASE; 
  tmp += DHR12R1_OFFSET + DAC_Align;

  /* Set the DAC channel1 selected data holding register */
  *(__IO uint32_t *) tmp = Data;
}

/**
  * @brief  Set the specified data holding register value for DAC channel2.
  * @param  DAC_Align: Specifies the data alignment for DAC channel2.
  *   This parameter can be one of the following values:
  *     @arg DAC_Align_8b_R: 8bit right data alignment selected
  *     @arg DAC_Align_12b_L: 12bit left data alignment selected
  *     @arg DAC_Align_12b_R: 12bit right data alignment selected
  * @param  Data : Data to be loaded in the selected data holding register.
  * @retval None
  */
void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data)
{
  __IO uint32_t tmp = 0;

  /* Check the parameters */
  assert_param(IS_DAC_ALIGN(DAC_Align));
  assert_param(IS_DAC_DATA(Data));
  
  tmp = (uint32_t)DAC_BASE;
  tmp += DHR12R2_OFFSET + DAC_Align;

  /* Set the DAC channel2 selected data holding register */
  *(__IO uint32_t *)tmp = Data;
}

/**
  * @brief  Set the specified data holding register value for dual channel
  *   DAC.
  * @param  DAC_Align: Specifies the data alignment for dual channel DAC.
  *   This parameter can be one of the following values:
  *     @arg DAC_Align_8b_R: 8bit right data alignment selected
  *     @arg DAC_Align_12b_L: 12bit left data alignment selected
  *     @arg DAC_Align_12b_R: 12bit right data alignment selected
  * @param  Data2: Data for DAC Channel2 to be loaded in the selected data 
  *   holding register.
  * @param  Data1: Data for DAC Channel1 to be loaded in the selected data 
  *   holding register.
  * @retval None
  */
void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1)
{
  uint32_t data = 0, tmp = 0;
  
  /* Check the parameters */
  assert_param(IS_DAC_ALIGN(DAC_Align));
  assert_param(IS_DAC_DATA(Data1));
  assert_param(IS_DAC_DATA(Data2));
  
  /* Calculate and set dual DAC data holding register value */
  if (DAC_Align == DAC_Align_8b_R)
  {
    data = ((uint32_t)Data2 << 8) | Data1; 
  }
  else
  {
    data = ((uint32_t)Data2 << 16) | Data1;
  }
  
  tmp = (uint32_t)DAC_BASE;
  tmp += DHR12RD_OFFSET + DAC_Align;

  /* Set the dual DAC selected data holding register */
  *(__IO uint32_t *)tmp = data;
}

/**
  * @brief  Returns the last data output value of the selected 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
  * @retval The selected DAC channel data output value.
  */
uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel)
{
  __IO uint32_t tmp = 0;
  
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  
  tmp = (uint32_t) DAC_BASE ;
  tmp += DOR_OFFSET + ((uint32_t)DAC_Channel >> 2);
  
  /* Returns the DAC channel data output register value */
  return (uint16_t) (*(__IO uint32_t*) tmp);
}

#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
/**
  * @brief  Checks whether the specified DAC flag is set or not.
  * @param  DAC_Channel: thee 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_FLAG: specifies the flag to check. 
  *   This parameter can be only of the following value:
  *     @arg DAC_FLAG_DMAUDR: DMA underrun flag                                                 
  * @retval The new state of DAC_FLAG (SET or RESET).
  */
FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG)
{
  FlagStatus bitstatus = RESET;
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_DAC_FLAG(DAC_FLAG));

  /* Check the status of the specified DAC flag */
  if ((DAC->SR & (DAC_FLAG << DAC_Channel)) != (uint8_t)RESET)
  {
    /* DAC_FLAG is set */
    bitstatus = SET;
  }
  else
  {
    /* DAC_FLAG is reset */
    bitstatus = RESET;
  }
  /* Return the DAC_FLAG status */
  return  bitstatus;
}

/**
  * @brief  Clears the DAC channelx's pending flags.
  * @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_FLAG: specifies the flag to clear. 
  *   This parameter can be of the following value:
  *     @arg DAC_FLAG_DMAUDR: DMA underrun flag                           
  * @retval None
  */
void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG)
{
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_DAC_FLAG(DAC_FLAG));

  /* Clear the selected DAC flags */
  DAC->SR = (DAC_FLAG << DAC_Channel);
}

/**
  * @brief  Checks whether the specified DAC interrupt has occurred or not.
  * @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_IT: specifies the DAC interrupt source to check. 
  *   This parameter can be the following values:
  *     @arg DAC_IT_DMAUDR: DMA underrun interrupt mask                       
  * @retval The new state of DAC_IT (SET or RESET).
  */
ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT)
{
  ITStatus bitstatus = RESET;
  uint32_t enablestatus = 0;
  
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_DAC_IT(DAC_IT));

  /* Get the DAC_IT enable bit status */
  enablestatus = (DAC->CR & (DAC_IT << DAC_Channel)) ;
  
  /* Check the status of the specified DAC interrupt */
  if (((DAC->SR & (DAC_IT << DAC_Channel)) != (uint32_t)RESET) && enablestatus)
  {
    /* DAC_IT is set */
    bitstatus = SET;
  }
  else
  {
    /* DAC_IT is reset */
    bitstatus = RESET;
  }
  /* Return the DAC_IT status */
  return  bitstatus;
}

/**
  * @brief  Clears the DAC channelx's interrupt pending bits.
  * @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_IT: specifies the DAC interrupt pending bit to clear.
  *   This parameter can be the following values:
  *     @arg DAC_IT_DMAUDR: DMA underrun interrupt mask                         
  * @retval None
  */
void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT)
{
  /* Check the parameters */
  assert_param(IS_DAC_CHANNEL(DAC_Channel));
  assert_param(IS_DAC_IT(DAC_IT)); 

  /* Clear the selected DAC interrupt pending bits */
  DAC->SR = (DAC_IT << DAC_Channel);
}
#endif

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美在线视频| 欧美日韩国产首页在线观看| 粉嫩一区二区三区性色av| 风流少妇一区二区| 欧美亚一区二区| 欧美一级黄色大片| 亚洲人成网站影音先锋播放| 亚洲午夜精品久久久久久久久| 日韩精品91亚洲二区在线观看| √…a在线天堂一区| 国产精品三级av| 日韩毛片在线免费观看| 久久99精品网久久| 69堂亚洲精品首页| 日韩激情av在线| 天堂资源在线中文精品| 老司机午夜精品99久久| 99精品热视频| 日韩欧美国产一二三区| 亚洲视频一区在线| 激情欧美一区二区| 欧洲视频一区二区| 国产日韩精品一区二区浪潮av| 亚洲日本一区二区| 蜜臀久久99精品久久久久宅男 | 日韩成人av影视| 久久99国内精品| 成人免费av在线| www激情久久| 日韩电影免费一区| 欧美精品第一页| 国产精品福利影院| 国产精品18久久久久久久网站| 欧美天天综合网| 国产精品免费网站在线观看| 视频一区视频二区中文| 欧美中文字幕一区二区三区亚洲| 日韩一区二区精品| 天天综合色天天综合色h| 欧美亚洲国产bt| 亚洲精品乱码久久久久久日本蜜臀| 丁香婷婷综合激情五月色| 亚洲国产成人av好男人在线观看| 国产一区二区三区香蕉| 精品国产免费人成在线观看| 最新高清无码专区| 一本大道综合伊人精品热热| 一区二区三区丝袜| 97se亚洲国产综合自在线| 国产精品色噜噜| 欧美日韩日日骚| 日本美女一区二区| 久久久久久久久97黄色工厂| 久色婷婷小香蕉久久| 欧美日韩视频不卡| 国产一级精品在线| 亚洲午夜精品网| 国产欧美精品一区| 欧美中文字幕一区二区三区亚洲| 一区二区三区精品视频在线| 日韩一区二区麻豆国产| 色综合久久中文字幕综合网| 久久精品国产77777蜜臀| xnxx国产精品| 欧美自拍丝袜亚洲| 国产乱码字幕精品高清av | 欧美三级电影一区| 国产福利一区二区三区在线视频| 国产精品国产三级国产aⅴ中文| 色综合久久综合| 91在线视频官网| 99视频有精品| 91免费精品国自产拍在线不卡| 美女视频黄 久久| 蜜桃免费网站一区二区三区| 中文字幕在线观看不卡视频| 国产精品嫩草影院com| 国产欧美一二三区| 国产午夜久久久久| 一区二区免费在线| 在线电影院国产精品| 欧美精品久久久久久久多人混战 | 久久综合色播五月| 欧美系列在线观看| 亚洲成人午夜影院| 国产在线精品一区二区| 精品综合久久久久久8888| 日韩在线a电影| 午夜精彩视频在线观看不卡| 中文字幕精品一区二区三区精品| 欧美一区二区视频网站| 在线播放亚洲一区| 欧美日韩三级在线| 精品欧美一区二区久久| 2024国产精品| 国产色综合一区| 欧美激情中文字幕一区二区| 日韩欧美成人激情| 欧美一区二区日韩| www欧美成人18+| 亚洲国产精品99久久久久久久久 | 欧美亚洲免费在线一区| 欧美私模裸体表演在线观看| 国产亚洲欧美色| 久久综合色综合88| 欧美亚洲动漫制服丝袜| 国产ts人妖一区二区| 亚洲国产精品嫩草影院| 久久国产精品72免费观看| 波多野结衣欧美| 欧美一级xxx| 亚洲乱码日产精品bd| 国产精品资源在线看| 日本乱人伦aⅴ精品| 日韩精品综合一本久道在线视频| 精品国产精品网麻豆系列 | 欧美综合一区二区三区| 日韩欧美中文一区| 久久婷婷成人综合色| 国产亚洲成aⅴ人片在线观看| 亚洲一区二区三区影院| 高清在线不卡av| 欧美刺激脚交jootjob| 日韩国产在线观看一区| fc2成人免费人成在线观看播放| 欧美二区三区91| 亚洲精品视频观看| 色吊一区二区三区| 一区二区三区四区不卡视频| 欧美视频一区二区三区在线观看| 日本少妇一区二区| 国产精品88888| 精品国产1区二区| 国产一区二区三区在线看麻豆| 91精品国产综合久久久久久久久久| 亚洲黄色免费电影| 欧美亚洲综合在线| 午夜欧美在线一二页| 国产成人精品免费一区二区| 欧美日韩日日骚| 免费在线观看成人| 久久久久国产精品麻豆ai换脸| 国产麻豆9l精品三级站| 中文字幕av不卡| 91久久精品一区二区三区| 亚洲午夜激情网页| 精品乱人伦小说| 国产伦精一区二区三区| 欧美精品久久久久久久久老牛影院| 亚洲精品综合在线| 欧美丝袜丝交足nylons图片| 五月婷婷激情综合网| 色哟哟精品一区| 亚洲国产精品久久不卡毛片| 精品1区2区在线观看| 色婷婷久久99综合精品jk白丝| 日韩精品免费专区| 精品久久久久香蕉网| 成人avav在线| 极品少妇xxxx精品少妇| 亚洲精品日日夜夜| 国产午夜精品一区二区三区嫩草| 色国产综合视频| 久久综合五月天婷婷伊人| 韩国一区二区在线观看| 亚洲精品国久久99热| 国产丝袜在线精品| 欧美精品aⅴ在线视频| 91性感美女视频| 粉嫩嫩av羞羞动漫久久久| 麻豆专区一区二区三区四区五区| 国产精品国产a级| xf在线a精品一区二区视频网站| 欧美巨大另类极品videosbest| 日本久久电影网| 91碰在线视频| 色老汉一区二区三区| 色欧美日韩亚洲| 色综合欧美在线视频区| 99国产精品99久久久久久| 粉嫩蜜臀av国产精品网站| 国产a区久久久| www.在线欧美| 91免费国产在线| 91黄色免费观看| 欧美亚日韩国产aⅴ精品中极品| 91丨九色丨国产丨porny| 青青草一区二区三区| 亚洲美女区一区| 亚洲成人免费观看| 亚洲h精品动漫在线观看| 亚洲一二三四区不卡| 亚洲一区在线观看网站| 亚洲va韩国va欧美va| 精品一区二区三区欧美| 99久久99久久免费精品蜜臀| 国产精品综合二区| 在线免费一区三区| 日韩一区二区三区高清免费看看| 日韩视频免费直播|