adc12.c

来自「IAR EWARM嵌入式系统编程与实践光盘源码」· C语言 代码 · 共 46 行

C
46
字号
// adc12.c
#include "adc12.h"

/*******************************************************************************
* 说明:ADC12_Init函数,初始化ADC
* 参数:无
* 返回值:无
*******************************************************************************/
void ADC12_Init(void) {
  ADC12->CSR  = 0x00;
  ADC12->CPR = 0x01;
}

/*******************************************************************************
* 说明:ADC12_PrescalerConfig函数,配置预定标器
* 参数:无
* 返回值:无
*******************************************************************************/
void ADC12_PrescalerConfig(u32 Adc12_clk) {
  ADC12->CPR = (vu16) (RCCU_FrequencyValue(RCCU_PCLK)/(Adc12_clk*512*8));
}

/*******************************************************************************
* 说明:ADC12_ITConfig函数,允许/禁止中断
* 参数:NewState=ENABLE->允许中断
*       NewState=ENABLE->禁止中断
* 返回值:无
*******************************************************************************/
void ADC12_ITConfig(FunctionalState NewState) {
  if (NewState == ENABLE) {
    if (ADC12->CSR & 0x0040) {
        switch (ADC12->CSR & 0x30) {  // 置位中断位与通道选择等效
            case 0x00 : ADC12->CSR |= ADC12_IT0_Mask;  break;
            case 0x10 : ADC12->CSR |= ADC12_IT1_Mask;  break;
            case 0x20 : ADC12->CSR |= ADC12_IT2_Mask;  break;
            case 0x30 : ADC12->CSR |= ADC12_IT3_Mask;  break;
        }
    }
    else
       ADC12->CSR |= ADC12_IT_Mask;   // 循环方式,置位所有中断位
  }
  else
    ADC12->CSR &= ~ADC12_IT_Mask;     // 清除所有中断位
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?