本帖最后由 2kenny 于 2017-7-28 11:08 编辑
例程是通道1的输出,我改了一下,改成通道2的输出,可是就一直输出最高电平。
void DAC2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//使能DAC时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//DAC_2
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟量输入
GPIO_Init(GPIOA,&GPIO_InitStructure);
DAC_InitStructure.DAC_Trigger=DAC_Trigger_None; //不使用触发功能 TEN1=0
DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形发生
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置
DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC2输出缓存关闭 BOFF1=1
DAC_Init(DAC_Channel_2,&DAC_InitStructure); //初始化DAC通道2
DAC_Cmd(DAC_Channel_2, ENABLE); //使能DAC通道2
//DAC_SetChannel2Data(DAC_Align_12b_R, 0); //12位右对齐数据格式设置DAC值
}
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(9600);
DAC2_Init();
while(1)
{
i++;
if(i%20==0)
{
led1=!led1;
}
DAC_SetChannel2Data(DAC_Align_12b_R,0);
}
在通道一的时候是有用的,就是把其中的channel1改成了channel2 然后管脚4改成了管脚5 |