//***************************************************************************** // 文件名: ADC
// 功 能:
// 说 明:
// 日 期:
// 版本号:
// 改 进:
//***************************************************************************** #include "ADC.h"
vu16 AD3_Value[ADC3_N][ADC3_M]; // 用来存放ADC3转换结果,也是DMA的目的地址 //***************************************************************************** //函数名:void InitDMA(void)
//作 用:DMA初始化
//说 明:
/
/***************************************************************************** void InitDMA2ADC3(void)
{
RCC‐>AHBENR |= 1 << 1; //开启DMA2时钟
__nop();
DMA2_CH5‐>CCR = 0; // 复位
DMA2_CH5‐>CCR |= 0 << 14; // 非存储器到存储器模式 DMA2_CH5‐>CCR |= 1 << 12; // 中等优先级
DMA2_CH5‐>CCR |= 1 << 10; // 存储器数据宽度16位
国家基础教育资源网DMA2_CH5‐>CCR |= 1 << 8; // 外设数据宽度为16位
DMA2_CH5‐>CCR |= 1 << 7; // 存储器增量模式
DMA2_CH5‐>CCR |= 0 << 6; // 外设地址非增量模式
DMA2_CH5‐>CCR |= 1 << 5; // 循环管模式
DMA2_CH5‐>CCR |= 0 << 4; // 从外设读
DMA2_CH5‐>CCR |= 0 << 3; // 禁止TE中断
DMA2_CH5‐>CCR |= 0 << 2; // 禁止HT中断
DMA2_CH5‐>CCR |= 0 << 1; // 禁止TC中断
美政府关门危机
DMA2_CH5‐>CNDTR = ADC3_M * ADC3_N; // 传输数量
厦门市民健康信息系统
DMA2_CH5‐>CPAR = (u32)(&ADC3‐>DR); // 外设地址
DMA2_CH5‐>CMAR = (u32)(&AD3_Value); // 内存地址
DMA2‐>IFCR |= 1 << 1; // 清零通道完成中断标志位 DMA2_CH5‐>CCR |= 1 << 0; // 开启通道
}
/
/***************************************************************************** //函数名:void InitADC3(void)
//作 用:ADC初始化
荷花淀教学反思//说 明:1.提高采样时间可以提高精确度
//***************************************************************************** void InitADC3(void)
{
呈味核苷酸RCC‐>APB2ENR |= 1 << 15; // ADC时钟开启
ADC3‐>CR1 = 0; // ADC控制寄存器1
ADC3‐>CR1 |= 1 << 8; // 使用扫描模式
ADC3‐>CR2 = 0; // ADC控制寄存器 2
ADC3‐>CR2 |= 0 << 11; // 数据右对齐
ADC3‐>CR2 |= 1 << 1; // 连续转换模式
ADC3‐>CR2 |= 7 << 17; // SWSTART启动规则通道组转换 ADC3‐>SMPR1 = 0x00FFFFFF; // 所有通道采样时间239.5周期,通道10‐17
ADC3‐>SMPR2 = 0x3FFFFFFF; // 所有通道采样时间239.5周期,通道0‐9
ADC3‐>SQR1 = 0; // ADC规则序列寄存器1
ADC3‐>SQR1 |= (ADC3_M ‐ 1) << 20; // 规则通道序列长度
ADC3‐>SQR2 = 0; // ADC规则序列寄存器2
ADC3‐>SQR2 |= ADC3_CH_A << 15; // 规则序列中第10个转换的通道编号 ADC3‐>SQR2 |= ADC3_CH_9 << 10; // 规则序列中第9个转换的通道编号
ADC3‐>SQR2 |= ADC3_CH_8 << 5; // 规则序列中第8个转换的通道编号
ADC3‐>SQR2 |= ADC3_CH_7 << 0; // 规则序列中第7个转换的通道编号
ADC3‐>SQR3 = 0; // ADC规则序列寄存器3
ADC3‐>SQR3 |= ADC3_CH_6 << 25; // 规则序列中第6个转换的通道编号
ADC3‐>SQR3 |= ADC3_CH_5 << 20; // 规则序列中第5个转换的通道编号
ADC3‐>SQR3 |= ADC3_CH_4 << 15; // 规则序列中第4个转换的通道编号
ADC3‐>SQR3 |= ADC3_CH_3 << 10; // 规则序列中第3个转换的通道编号
ADC3‐>SQR3 |= ADC3_CH_2 << 5; // 规则序列中第2个转换的通道编号
ADC3‐>SQR3 |= ADC3_CH_1 << 0; // 规则序列中第1个转换的通道编号
十七届中央候补委员名单ADC3‐>CR2 |= 1 << 8; // 使用DMA模式
ADC3‐>CR2 |= 1 << 0; // 开启ADC转换
ADC3‐>CR2 |= 1 << 3; // 初始化校准寄存器
while((ADC3‐>CR2 & (u32)0x08) == 1); // 等待初始化校准寄存器完成
ADC3‐>CR2 |= 1 << 2; // 开始校准
while((ADC3‐>CR2 & (u32)0x04) == 1); // 等待准寄存器完成
ADC3‐>CR2 |= 1 << 20; // 使用外部触发信号启动转换 ADC3‐>CR2 |= 1 << 22; // 开始转换规则通道
}