电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

STM32超详细的讲解——AD单通道与多通道转换(DMA)VIP免费

STM32超详细的讲解——AD单通道与多通道转换(DMA)_第1页
1/6
STM32超详细的讲解——AD单通道与多通道转换(DMA)_第2页
2/6
STM32超详细的讲解——AD单通道与多通道转换(DMA)_第3页
3/6
第三章AD 转换 本章的内容分两部分,第一是AD 的单通道转换,第二是AD 的多通道转换。首先先将单通道转换。 STM32 中自带的AD 最大的转换频率是14MHZ,共有 16 个转换通道,每个转换通道对应的管脚如下表所示。 管脚名 默认复用功能 PF6 ADC3_IN4 PF7 ADC3_IN5 PF8 ADC3_IN6 PF9 ADC3_IN7 PF10 ADC3_IN8 PC0 ADC123_IN10 PC1 ADC123_IN11 PC2 ADC123_IN12 PC3 ADC123_IN13 PA3 ADC123_IN3 PA6 ADC12_IN6 PA7 ADC12_IN7 PC4 ADC12_IN14 PC5 ADC12_IN15 PB0 ADC12_IN8 PB1 ADC12_IN9 注:ADC123_IN10 表明 PC0 管脚可以作为 AD1,AD2,AD3 的第10 通道。 下面我们将 PC0 配置成 AD1 的通道10 为例进行讲解。 3.1首先我们应将 PC0 设置成模拟输入: #include "adc.h" /*为何定义 ADC1_DR_Address 为((u32)0x40012400+0x4c) ,因为存放 AD 转换结果的寄存器的地址就是0x4001244c*/ #define ADC1_DR_Address ((u32)0x40012400+0x4c) /*定义变量 ADC_ConvertedValue,放 AD1 通道10 转换的数据*/ __IO uint16_t ADC_ConvertedValue; static void ADC1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable ADC1 and GPIOC clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOC, &GPIO_InitStructure); } 3.2设置完端口后下一步当然是对 AD 进行初始化: 这里需要补充一个知识点 DMA,DMA 就相当与 CPU 的一个秘书,他的作用就是帮 CPU 减轻负担的。说的再具体点就是帮 CPU 来转移数据的。我们都知道,AD 每次转换结束后会将转换的结果放到一个固定的寄存器里,以往我们如果想将该寄存器中的值赋给某一变量时会用到赋值语句,如果不用 DMA,则赋值语句便要 CPU 来完成,CPU 本来就要忙着处理其他事情,现在还要来解决赋值语句这么简单的问题,肯到会蛋疼。所以需要 DMA 这个秘书来帮他解决这个问题。由于 DMA 只是个秘书,所以比较笨,你只有把任务交代清楚了她才能很好的完成任务。那么怎样来给 DMA 吩咐任务呢,聪明的人肯定想到了,那当然是“DMA_Init(DMA1_Channel1, &DMA_InitStru ctu re)”这个函数啦。下面就来一步步的来给DMA 交代任务。 /*...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

STM32超详细的讲解——AD单通道与多通道转换(DMA)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部