}
#include "sys_config.h"
#include "stm32f10x.h"
#include "usart.h"
#include "adc.h"
#include "delay.h"
#include "dma.h"
#define Channel_Number 2 // 通道数的宏定义
u32 AD_Digital_Value[Channel_Number]; //AD采样值
//unsigned int AD_Digital_Value[Channel_Number]; //AD采样值
float AD_Analog_Value[Channel_Number]; //AD模拟电压值
/*******************************************************************************
* @函数名称 main
* @函数说明 主函数
* @输入参数 无
* @输出参数 无
* @返回参数 无
*****************************************************************************/
int main(void)
{
RCC_Configuration(); //时钟配置
// NVIC_Configuration(); //中断配置,其实没用到中断
GPIO_Configuration(); //配置F.7口
USART1_Configuration(); //USART1初始化
// printf("\r\n three channels of votage: \r\n") ;
// GPIO_SetBits(GPIOF, GPIO_Pin_7);
DMA_Configuration(DMA1_Channel1,(u32)&ADC1->DR,(u32)AD_Digital_Value,Channel_Number );//DMA1通道1;外设为ADC1;
adc1_Configuration(); //ADC初始化
// DMA_Cmd(DMA1_Channel1, DISABLE);
DMA_Cmd(DMA1_Channel1, ENABLE);//启动DMA通道,应该先启动DMA,再启动AD
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//软件启动AD转换
while (1)
{
u8 i;
/*控制led灯的亮灭*/
GPIO_ResetBits(GPIOF, GPIO_Pin_7);
delay_ms(1000) ;
GPIO_SetBits(GPIOF, GPIO_Pin_7);
delay_ms(1000) ;
// while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//等待传输完成否则第一位数据容易丢失
for( i=0;i<Channel_Number;i++)
{
//AD_Digital_Value=Get_Adc_Average(ADC_Channel_1,10); //获取AD转换值,10个求一个平均值,更加精确
AD_Analog_Value=(float)AD_Digital_Value*(3.3/4096);
}
printf("\r\n channel_10_digital:%d channel_10_annalog:%f \r\n",AD_Digital_Value[0],AD_Analog_Value[0]);
printf("\r\n channel_11_digital:%d channel_11_analog:%f \r\n",AD_Digital_Value[1],AD_Analog_Value[1]);
// printf("\r\n channel_12_digital:%d channel_12_analog:%f \r\n",AD_Digital_Value[0],AD_Analog_Value[0]);
}
}
有人遇到过这样的问题吗???