我想STM32 DAC对外输出电压,电压的值根据不同情况设定不同的值,现在我发现在调用库函数DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);在一个while循环里面,即使DAC_SetChannel1Data(DAC_Align_12b_R,vol);中vol值是固定的,DOR的数据值也会随着SWTRIG的ENABLE而值递增,最大3.3v,在0v-3.3v循环。如果不将DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);放入while中,即只ENABLE一次,可输出固定的值,但是目的是要一个可调的而不是固定的电压值,请高手帮忙!
程序如下:
void DAC_Configuration(void)
{
DAC_InitTypeDef DAC_InitStruct;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Configure DAC channe1 outputs pins */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
DAC_InitStruct.DAC_Trigger=DAC_Trigger_Software;
DAC_InitStruct.DAC_WaveGeneration=DAC_WaveGeneration_None;
DAC_InitStruct.DAC_OutputBuffer=DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1,&DAC_InitStruct);
DAC_Cmd(DAC_Channel_1, ENABLE);
}
main()
{
DAC_Configuration();
while(1)
{
DAC_SetChannel1Data(DAC_Align_12b_R,0X0D93); DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
}
结果输出电压值递增而不固定
|