STM32F407 ADC双通道同时采样

本文介绍了如何在STM32F407上配置ADC进行双通道同时采样,通过调用adc_init函数启动采样,采样16380个点后中断DMA2_Stream0_IRQHandler,失能定时器3并设置采样成功标志位SampleSuccessFlag。在主循环中检查该标志,处理采样值。采样波形可以通过上位机软件(基于WPF)实时显示。
摘要由CSDN通过智能技术生成
#include "stm32f4xx.h"
#define ADC_CDR_ADDRESS ((uint32_t)0x40012308)
#define ADC12_BUFFER_SIZE  16380
#define ADC_SAMPLE_FREQUENCY 10 //10HZ  这个采样频率的意思是 100ms采样完16380个点
uint32_t SampleSuccessFlag   = 0;   //采样成功标志位
__IO uint32_t ADC12ConvertedValue[ADC12_BUFFER_SIZE];//高16位保存ADC2的值,低16位保存低ADC1的值

//我的开发板的时钟频率为144M,而TIM3的频率为72M
static void TIM3_Config(void) 
{  
    TIM_TimeBaseInitTypeDef timer_init_structure;
	  
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);            //使能TIM3时钟    
    TIM_DeInit(TIM3);                                               //复位TIM3    
    timer_init_structure.TIM_ClockDivision = TIM_CKD_DIV1;          //系统时钟
    timer_init_structure.TIM_CounterMode = TIM_CounterMode_Up;      //向上计数模式  
    timer_init_structure.TIM_Period = ( 2000000/(ADC_SAMPLE_FREQUENCY*ADC12_BUFFER_SIZE) )-1;                        
    timer_init_structure.TIM_Prescaler = 36 - 1;                      //计数时钟预分频
    TIM_TimeBaseInit(TIM3, &timer_init_structure);
  	
    TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);
    TIM_Cmd(TIM3, ENABLE);                                          //使能TIM3  
}
/*******************************************************************************
 * Function Name  : ADC12_Init
 * Description    : 
 * Input          : None
 * Output         : None
 * Return         : None
 *******************************************************************************/
void ADC12_Init(void)
{
  ADC_InitTypeDef       ADC_InitStr
  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值