目录
前言:
填坑:在完成纯软件实现贪吃蛇后,CLION 基于Easyx的贪吃蛇小游戏(链表),CLION 基于EasyX的贪吃蛇小游戏,开始将代码移植到STM32上使用硬件实现贪吃蛇,项目分成两部分,一部分先介绍ADC读取摇杆值,第二部分再将贪吃蛇具体的落实到硬件上,现在先进行第一部分记录。
一、ADC介绍
STM32上的ADC为12位ADC,且输入电压只能是0~3.3V,所以后期在给摇杆上电时要格外注意,摇杆上电压的5V一定要接3.3V,否则可能会损坏单片机。
通过查看手册可知,STM32F103ZET6上有三个ADC,每个ADC有21个输入通道。

这里我选用ADC3上的通道4和通道5即PF6,PF7进行摇杆X、Y两轴的模拟量读取。

ADC框图如图所示:
二、DMA介绍
DMA是数据转运的助手,通过DMA进行数据转运可以极大的节省软件资源,让系统通过硬件自动执行相应的操作。
通过查看数据手册可知,STM32F103ZET6共有两个ADC可以使用,两者均挂载在AHB总线上。


三、代码编写 ——不使用DMA进行数据转运
1.开启对应的时钟以及ADCCLK的配置
//使用ADC3_IN4和ADC3_IN5,ADC时钟使用6分频,即12MHz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
2.初始化输入引脚
注意:ADC的GPIO配置一定是模拟输入
//初始化ADC输入引脚
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AIN ;
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz ;
GPIO_Init (GPIOF ,&GPIO_InitStructure);
3.ADC的基本配置
对结构体进行配置,并对ADC进行上电(ADC_CMD)
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//单ADC模式
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//无外部触发源(使用软件触发)
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//单次转换模式
ADC_InitStructure.ADC_ScanConvMode=DISABLE;//非扫描模式
ADC_InitStructure.ADC_NbrOfChannel=1;//一个通道
ADC_Init(ADC3,&ADC_InitStructure);
ADC_Cmd(ADC3,ENABLE);
4.ADC校准
先是复位校准,等待ADC复位校准完成后,开始进行ADC校准,通过函数描述以及手册即可得出ADC复位校准和ADC校准完成的标准为均为RESET。




最低0.47元/天 解锁文章
439

被折叠的 条评论
为什么被折叠?



