电机控制使用四路注入通道采集,参考ST官方库,使用定时器10us触发一次,使用ADC1和ADC2各2路注入通道。
需要一路ADC进行规则采样油门信号,使用中断的话会和注入通道中断放在同一个函数里面 ,我不喜欢,所以使用了DMA中断。
PreKnowledge:
规则通道:最多16个规则通道,采样数据存储ADCx-->DR
注入通道:最多4个注入通道,采样数据存储ADCx-->JDR。注入通带顾名思义是在规则通道转换中插队的通道。在规则通道转换的时候有注入通道的信息进来,则先将注入通道转换结束再回到规则通道,所以注入通道只有在规则通道存在时才会出现。
DMA通道:DMA转换注入通道还是规则通道,外设地址进行不同设置就行。还有一个,就是DMA只有在规则通道转换结束的时候才会被触发,记不清在哪篇博客里面看到的了,但是官方文档中没找到这句话。
使用芯片:STM32F103C8T6 软件:keil5
1.ADC设置
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 |RCC_APB2Periph_ADC2, ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //ADC时钟=(晶振频率/分频)72Mhz/6 = 12Mhz
ADC_InitStructure.ADC_Mode = ADC_Mode_RegInjecSimult; //混合的同步规则和注入
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ScanConvMode