最近在做一个手柄,用到了一个游戏摇杆,游戏摇杆的原理就是两个电位器,通过读取ADC的值计算位置,原理和触摸屏类似,那么就需要用到两路ADC了,但是我用的开发板是野火的,火哥给的例程只有单路ADC采集,查阅了相关资料解决了多路的问题,现在我把主要的代码贴在下面,以及一些注意的地方。
#define ADC1_DR_Address ((u32)0x40012400+0x4c)
__IO uint16_t ADC_ConvertedValue[2];
/**
* @brief 使能ADC1和DMA1的时钟,初始化PA.0&PA.1
* @param 无
* @retval 无
*/
static void ADC1_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable DMA clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
/* Enable ADC1 and GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);
/* Configure PA.0&PA.1 as analog input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure); //输入时不用设置速率
}
/**
* @brief 配置ADC1的工作模式为DMA模式
* @param 无
* @retval 无
*/
static vo