ARM微控制器与嵌入式系统 课件 37 STM32-ADC的编程要点_第1页
ARM微控制器与嵌入式系统 课件 37 STM32-ADC的编程要点_第2页
ARM微控制器与嵌入式系统 课件 37 STM32-ADC的编程要点_第3页
ARM微控制器与嵌入式系统 课件 37 STM32-ADC的编程要点_第4页
ARM微控制器与嵌入式系统 课件 37 STM32-ADC的编程要点_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM微控制器与嵌入式系统

STM32-ADC编程要点主讲人:景妮琴北京电子科技职业学院内容ADC硬件设计STM32-ADC编程要点ADC结构体ADC库函数ADC中断主函数计算电压值ADC硬件设计使用一个滑动变阻器,将中间端子接到ADC通道的GPIO(从表中任选)通道号ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1PF3通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC13PC13PC13通道14PC4PC4PF4通道15PC5PC5PF5编程要点独立模式-单通道-中断(不使用DMA)1-打开GPIO时钟,ADC时钟2-ADC通道端口配置3-配置ADC4-配置通道的转换顺序、配置中断、打开ADC、触发ADC开始转换5-编写main函数,中断服务函数,获取ADC转换结果编程要点:独立模式-单通道-中断(不使用DMA)1、开启GPIO时钟、ADC时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);编程要点:独立模式-单通道-中断(不使用DMA)2、ADC通道端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;//模拟模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空输入GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化配置ADC_InitTypeDef初始化结构体ADC_Resolution:配置ADC的分辨率,可选的分辨率有12位、10位、8位和6位。ADC_Resolution_12b,ADC_Resolution_10b,ADC_Resolution_8b,ADC_Resolution_6bADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;//ADC分辨率ADC_InitTypeDef初始化结构体ScanConvMode:配置是否使用扫描。可选参数为ENABLE和DISABLE。如果是单通道AD转换使用DISABLE,如果是多通道AD转换使用ENABLE。ADC_InitStructure.ADC_ScanConvMode=DISABLE;//单通道不扫描ADC_InitTypeDef初始化结构体ADC_ContinuousConvMode:配置是启动自动连续转换还是单次转换可选参数为ENABLE和DISABLE使用ENABLE配置为使能自动连续转换;使用DISABLE配置为单次转换,转换一次后停止需要手动控制才重新启动转换。ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//连续转换ADC_InitTypeDef初始化结构体ADC_ExternalTrigConvEdge:外部触发极性选择如果使用外部触发,可以选择触发的极性,可选有禁止触发检测、上升沿触发检测、下降沿触发检测以及上升沿和下降沿均可触发检测。ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止外部边沿触发ADC_InitTypeDef初始化结构体ADC_ExternalTrigConv:外部触发选择实际上,我们一般使用软件自动触发。ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_Ext_IT11;//使用软件触发,此值随便赋值即可ADC_InitTypeDef初始化结构体ADC_DataAlign:转换结果数据对齐模式可选右对齐ADC_DataAlign_Right,左对齐ADC_DataAlign_Left。一般我们选择右对齐模式。ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;

//数据右对齐 ADC_InitTypeDef初始化结构体ADC_NbrOfChannel:AD转换通道数目。Thisparametermustrangefrom1to16.ADC_InitStructure.ADC_NbrOfConversion=1;//转换通道1个ADC_CommonInitTypeDef通用初始化结构体ADC_Mode:ADC工作模式选择,有独立模式、双重模式以及三重模式ADC_CommonInitStructure.ADC_Mode=ADC_Mode_Independent;//独立ADC模式ADC_CommonInitTypeDef通用初始化结构体ADC_Prescaler:ADC时钟分频系数选择ADC时钟是由PCLK2分频而来,分频系数决定ADC时钟频率,可选的分频系数为2、4、6和8。ADC最大时钟配置为36MHz。

ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4;//时钟为fpclkx分频ADC_CommonInitTypeDef通用初始化结构体ADC_DMAAccessMode:DMA模式设置,只有在双重或者三重模式才需要设置,可以设置三种模式

ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled;//禁止DMA直接访问模式ADC_CommonInitTypeDef通用初始化结构体ADC_TwoSamplingDelay:2个采样阶段之前的延迟,仅适用于双重或三重交错模式。ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_20Cycles;//采样时间间隔 ADC库函数ConfiguresADC1Channel2as:firstconvertedchannelwithan7.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_7Cycles5);ADC库函数ConfiguresADC1Channel8as:secondconvertedchannelwithan1.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_8,2,ADC_SampleTime_1Cycles5);编程要点:独立模式-单通道-中断(不使用DMA)3、ADC配置编程要点:独立模式-单通道-中断(不使用DMA)4、配置通道的转换顺序、配置中断、打开ADC、触发ADC开始转换ADC中断主函数计算电压值5、编写main函数,中断服务函数,获取ADC转换结果获取ADC转换结果uint16_tADC_Get_Value(ADC_TypeDef*adcx,uint16_tchx,uint8_tRauk){ //为选定的ADC常规通道配置相应的*排序器和采样时间 ADC_RegularChannelConfig(adcx,chx,Rauk,ADC_SampleTime_480Cycles); //软件启动ADC ADC_SoftwareStartCo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论