本帖最后由 lxz600408 于 2021-2-23 22:59 编辑
初用一元的MM32F0010,在ADC使用2个通道连续扫描,一个通道做窗口比较,很省心。不象32F030的要用到DMA。该芯片直接读用到的通道数据即可。厂家提拱的reg_xxx.h很暖心,对我们这些英文不好的人来说,看数据手册对照下就知道怎么写;下面是测试2路实时温度初始化实例:
void ADC1_Configuration(void)
{
RCC->APB1RSTR |= RCC_APB1RSTR_ADC1; //ADC1 reset
RCC->APB1RSTR &= ~(RCC_APB1RSTR_ADC1); //reset end//12位有效/右对齐/窗口比较通道选择0/
ADC1->ADCFG |= ADC_CFGR_PRE_16//ADC 预分频
|ADC_CFGR_SAMCTL_71_5// 选择通道x 的采样时间
//|ADC_CFGR_RSLTCTL_8 //转换数据分辨
|ADC_CFGR_ADWEN;//窗口比较器使能
//|ADC_CFGR_VEN//内部参考电压使能
ADC1->ADCR |= ADC_CR_CONTINUE //连续扫描
|ADC_CR_TRG_EDGE_MASK;//11: 屏蔽触发
ADC1->ADCMPR=0X08fa0389;//32BIT 窗口比较寄存器 H=2.8v L=1.1v
ADC1->CHANY0 = (u32)0X00000056; //chennl 0=AIN6;chennl 1=AIN5;对应读ADDR6,ADDR5
ADC1->ANYCFG |= 1; //通道数配置 0-1
ADC1->ANYCR |= ADC1_CHANY_CR_MDEN;//使能任意通道控制寄存器
ADC1->ADCFG |= ADC_CFGR_ADEN;//A/D 转换使能
__NOP();
ADC1->ADCR |= ADC_CR_ADST; //Start Conversion
} |