原子哥,各位大神,我想请教一个问题,就是我准备用STM32F103的两个DAC通道DAC1和DAC2同时输出不同的电压值,我通过串口将设定的电压值读入,最后再用串口将DAC的电压值读取出来,检测读取的电压值是否是我设置的电压。然后,我用万用电表测量PA4和PA5两个引脚的值,其中PA5是我设置的电压,但是PA4引脚的电压只有0.1左右,与我设置的值不符合。可是,在串口上却准确地读取出了我设置的电压值。这是为什么呢,是因为我在DAC的初始化里设置错误吗?
请大家帮忙解答,多谢多谢!
[mw_shl_code=c,true]void Dac1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitType;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能PORTA通道时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能DAC通道时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5; // 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5) ;//PA.4 PA.5输出高
DAC_InitType.DAC_Trigger=DAC_Trigger_None;
DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;
DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;
DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ;
DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1
DAC_Init(DAC_Channel_2,&DAC_InitType); //初始化DAC通道2
DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC1
DAC_Cmd(DAC_Channel_2, ENABLE); //使能DAC2
DAC_DualSoftwareTriggerCmd(ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R, 0);
DAC_SetChannel2Data(DAC_Align_12b_R, 0);
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
多谢原子哥~原来是因为我把mini板接在了我做的一个板子上,PA4端口复用了!粗心粗心!
一周热门 更多>