#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
STM32F407 ADC双通道同时采样
最新推荐文章于 2024-08-20 10:52:55 发布
本文介绍了如何在STM32F407上配置ADC进行双通道同时采样,通过调用adc_init函数启动采样,采样16380个点后中断DMA2_Stream0_IRQHandler,失能定时器3并设置采样成功标志位SampleSuccessFlag。在主循环中检查该标志,处理采样值。采样波形可以通过上位机软件(基于WPF)实时显示。
摘要由CSDN通过智能技术生成