《智能电子产品设计与制作》课件-1.8.3 AD转换及DMA固件函数库_第1页
《智能电子产品设计与制作》课件-1.8.3 AD转换及DMA固件函数库_第2页
《智能电子产品设计与制作》课件-1.8.3 AD转换及DMA固件函数库_第3页
《智能电子产品设计与制作》课件-1.8.3 AD转换及DMA固件函数库_第4页
《智能电子产品设计与制作》课件-1.8.3 AD转换及DMA固件函数库_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1.8.3AD转换及DMA固件函数库项目一11一月2026智能电子产品设计与制作主要内容ADC及DMA固件函数库3.ADC及DMA固件函数库(1)函数ADC_Init函数原型:voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct)函数功能:根据ADC_InitTypeDef中指定的参数初始化外设ADCx寄存器。ADC_InitStruct指向ADC_InitTypeDef的指针,ADC_InitTypeDef结构体定义于stm32f0xx_adc.h文件中。其结构体如下:typedefstruct{uint32_tADC_Resolution;//分辨率选择FunctionalStateADC_ContinuousConvMode;//转换模式单次还是连续uint32_tADC_ExternalTrigConvEdge;//外部触发边沿uint32_tADC_ExternalTrigConv;//外部触发源uint32_tADC_DataAlign;//对齐方式uint32_tADC_ScanDirection;//扫描方向}ADC_InitTypeDef;3.ADC及DMA固件函数库(1)函数ADC_Init实例:ADC_InitTypeDefADC_InitStructure;ADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;//12位ADADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//连续转换失能//不使用外部触发ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐ADC_InitStructure.ADC_ScanDirection=ADC_ScanDirection_Upward;//向上扫描ADC_Init(ADC1,&ADC_InitStructure);3.ADC及DMA固件函数库(2)函数ADC_Cmd函数原型:voidADC_Cmd(ADC_TypeDef*ADCx,FunctionalStateNewState)函数功能:使能ADC实例:ADC_Cmd(ADC1,ENABLE);//使能ADC3.ADC及DMA固件函数库(3)函数ADC_ChannelConfig函数原型:voidADC_ChannelConfig(ADC_TypeDef*ADCx,uint32_tADC_Channel,uint32_tADC_SampleTime)实例:ADC_ChannelConfig(ADC1,ADC_Channel_0,ADC_SampleTime_239_5Cycles);//ADC1通道0,设置采样时间239.5个周期。3.ADC及DMA固件函数库(4)函数ADC_GetCalibrationFactor函数原型:uint32_tADC_GetCalibrationFactor(ADC_TypeDef*ADCx)函数功能:激活所选ADC的校准操作实例:ADC_GetCalibrationFactor(ADC1);//ADC校准(5)函数ADC_StartOfConversion函数原型:voidADC_StartOfConversion(ADC_TypeDef*ADCx)函数功能:启动AD转换实例:ADC_StartOfConversion(ADC1);//启动AD转换3.ADC及DMA固件函数库(6)函数ADC_GetConversionValue函数原型:uint16_tADC_GetConversionValue(ADC_TypeDef*ADCx)函数功能:获取AD转换结果实例:uint16_tAD_Value;AD_Value=ADC_GetConversionValue(ADC1);(7)函数ADC_DMACmd函数原型:voidADC_DMACmd(ADC_TypeDef*ADCx,FunctionalStateNewState)函数功能:使能ADC的DMA请求实例:

ADC_DMACmd(ADC1,ENABLE);//使能ADC的DMA请求3.ADC及DMA固件函数库(8)函数ADC_DMARequestModeConfig函数原型:voidADC_DMARequestModeConfig(ADC_TypeDef*ADCx,uint32_tADC_DMARequestMode)函数功能:启用或禁用上次传输后的ADC的DMA请求。实例:ADC_DMARequestModeConfig(ADC1,ADC_DMAMode_Circular);//循环模式下DMA请求3.ADC及DMA固件函数库(9)函数ADC_GetFlagStatus函数原型:FlagStatusADC_GetFlagStatus(ADC_TypeDef*ADCx,uint32_tADC_FLAG)函数功能:获取ADC状态标志位实例:ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);//获取AD转换完成状态标志位(10)函数ADC_ClearFlag函数原型:voidADC_ClearFlag(ADC_TypeDef*ADCx,uint32_tADC_FLAG)函数功能:清除ADC状态标志位实例:ADC_ClearFlag(ADC1,ADC_FLAG_EOC);//清除EOC标志位3.ADC及DMA固件函数库(11)函数DMA_Init函数原型:voidDMA_Init(DMA_Channel_TypeDef*DMAy_Channelx,DMA_InitTypeDef*DMA_InitStruct)函数功能:DMA初始化,根据DMA_InitTypeDef中指定的参数初始化外设DMA寄存器。DMA_InitStruct是指向DMA_InitTypeDef的指针,DMA_InitTypeDef结构体定义于stm32f0xx_dma.h文件中,其结构体定义如下:typedefstruct{uint32_tDMA_PeripheralBaseAddr;//外设基地址uint32_tDMA_MemoryBaseAddr;//内存基地址uint32_tDMA_DIR;//DMA传输方向uint32_tDMA_BufferSize;//DMA缓冲区大小uint32_tDMA_PeripheralInc;//外设寄存器地址是否递增uint32_tDMA_MemoryInc;//内存地址是否递增uint32_tDMA_PeripheralDataSize;//外设数据宽度uint32_tDMA_MemoryDataSize;//内存数据宽度uint32_tDMA_Mode;//DMA模式:normal或circular模式uint32_tDMA_Priority;//DMA优先级uint32_tDMA_M2M;//内存到内存传输}DMA_InitTypeDef;3.ADC及DMA固件函数库(11)函数DMA_Init实例:#defineADC1_DR_Address((uint32_t)0x40012440)uint16_tADC_ConvertedValue[1024];DMA_InitTypeDefDMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;//外设基地址//内存基地址DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)ADC_ConvertedValue;DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;//传输方向外设到内存DMA_InitStructure.DMA_BufferSize=1024;//定义内存缓冲区大小//外设地址不递增DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;//内存地址递增//半字传输DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;//半字传输DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;//循环模式DMA_InitStructure.DMA_Priority=DMA_Priority_High;//优先级为高DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;//非内存到内存DMA_Init(DMA1_Channel1,&DMA_InitStructure);3.ADC及DMA固件函数库(12)函数DMA_Cmd函数原型:voidDMA_Cmd(DMA_Channel_TypeDef*DMAy_Channelx,FunctionalStateNewState)函数功能:使能DMA的通道实例:DMA_Cmd(DMA1_Channel1,ENABLE);//使能DMA1通道1(13)函数DMA_ITConfig函数原型:voidDMA_ITConfig(DMA_Channel_TypeDef*DMAy_Channelx,uint32_tDMA_IT,FunctionalStateNewState)函数功能:DMA中断使能配置实例:DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE);//使能DMA1通道1发送完成中断3.ADC及DMA固件函数库(14)函数DMA_GetITStatus函数原型:ITStatusDMA_GetITStatus(

温馨提示

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

评论

0/150

提交评论