一文带你看懂Stm32定时器+ADC+DMA进行AD采样的实现.doc
《一文带你看懂Stm32定时器+ADC+DMA进行AD采样的实现.doc》由会员分享,可在线阅读,更多相关《一文带你看懂Stm32定时器+ADC+DMA进行AD采样的实现.doc(6页珍藏版)》请在三一文库上搜索。
1、一文带你看懂Stm32定时器+ADC+DMA进行AD采样的实现此STM32单片机为STM32F103系列的STM32的ADC有DMA功能这都毋庸置疑,也是我们用的最多的!然而,如果我们要对一个信号(比如脉搏信号)进行定时采样(也就是隔一段时间,比如说2ms),有三种方法:1、使用定时器中断每隔一定时间进行ADC转换,这样每次都必须读ADC的数据寄存器,非常浪费时间!2、把ADC设置成连续转换模式,同时对应的DMA通道开启循环模式,这样ADC就一直在进行数据采集然后通过DMA把数据搬运至内存。但是这样做的话还得加一个定时中断,用来定时读取内存中的数据!3、使用ADC的定时器触发ADC转换的功能,
2、然后使用DMA进行数据的搬运!这样只要设置好定时器的触发间隔,就能实现ADC定时采样转换的功能,然后可以在程序的死循环中一直检测DMA转换完成标志,然后进行数据的读取,或者使能DMA转换完成中断,这样每次转换完成就会产生中断,我是采用第二种方法。下面上代码:我这里使用的单通道/定时器初始化voidTIM2_ConfiguraTIon(void)TIM_TImeBaseInitTypeDefTIM_TimeBaseStructure;TIM_OCInitTypeDefTIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,EN
3、ABLE);TIM_TimeBaseStructure.TIM_Period=1999;/设置2ms一次TIM2比较的周期TIM_TimeBaseStructure.TIM_Prescaler=71;/系统主频72M,这里分频71,相当于1000K的定时器2时钟TIM_TimeBaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,TIM_TimeBaseStructure);TIM_OCInitStructure.TIM
4、_OCMode=TIM_OCMode_PWM1;/下面详细说明TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;/TIM_OutputState_Disable;TIM_OCInitStructure.TIM_Pulse=1000;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;/如果是PWM1要为Low,PWM2则为HighTIM_OC2Init(TIM2,TIM_OCInitStructure);/TIM_InternalClockConfig(TIM2);/TI
5、M_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);/TIM_UpdateDisableConfig(TIM2,DISABLE);/ADC_DMA初始化配置voidADC_DMA_Config(void)DMA_InitTypeDefDMA_InitStructure;/注:ADC为12位模数转换器,只有ADCConvertedValue的低12位有效RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);/使能DMA时钟DMA_DeInit(DMA1_Channel1);/开启DMA1的第一通道DMA_Init
6、Structure.DMA_PeripheralBaseAddr=ADC1_DR_Address;/DMA对应的外设基地址DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)ADCConvertedValue;/内存存储基地址DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;/DMA的转换模式为SRC模式,由外设搬移到内存DMA_InitStructure.DMA_BufferSize=1;/DMA缓存大小,1个DMA_InitStructure.DMA_PeripheralInc=DMA_Peripher
7、alInc_Disable;/接收一次数据后,设备地址禁止后移DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;/关闭接收一次数据后,目标内存地址后移DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;/定义外设数据宽度为16位DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;/DMA搬移数据尺寸,HalfWord就是为16位DMA_InitStructure.DM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一文带 看懂 Stm32 定时器 ADC DMA 进行 AD 采样 实现
链接地址:https://www.31doc.com/p-3362462.html