|
void DACInit(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
FL_DAC_InitTypeDef DAC_InitStruct = {0} ;
//配置引脚为模拟功能
//DAC_OUT引脚 PC5
GPIO_InitStruct.pin = FL_GPIO_PIN_5;
GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_DISABLE;
GPIO_InitStruct.analogSwitch = FL_DISABLE;
FL_GPIO_Init(GPIOC, &GPIO_InitStruct);
//DAC寄存器设置
DAC_InitStruct.sampleHoldMode = FL_DISABLE;//采样保持使能配置
DAC_InitStruct.sampleTime = 0xFF; //采样时间
DAC_InitStruct.holdTime = 0X0; //保持时间
DAC_InitStruct.triggerMode = FL_ENABLE; //触发模式使能配置
DAC_InitStruct.triggerSource = FL_DAC_TRGI_SOFTWARE;//触发源配置
DAC_InitStruct.bufferMode = FL_DISABLE; //buffer模式配置
DAC_InitStruct.switchMode = FL_ENABLE; //输出开关模式配置
FL_DAC_Init(DAC, &DAC_InitStruct);
}
void DAC_SWTrigger(void)
{
FL_DAC_Enable(DAC);
FL_DAC_WriteData(DAC, 4095);
FL_DAC_EnableSoftwareTrigger(DAC);
FL_DAC_WriteData(DAC, 2047);
FL_DAC_EnableSoftwareTrigger(DAC);
}
int main(void)
{
MF_Clock_Init();
MF_SystemClock_Config();
FL_Init();
MF_Config_Init();
UserInit();
DACInit();
DAC_SWTrigger();
while(1){}
}
在例程“DAC正常输出模式_连续”和例程“DAC正常输出模式_触发NODMA”中,初始化DAC未软件触发后使用DAC_SWTrigger()函数进行数字量写入,
写入后通过FL_DAC_EnableSoftwareTrigger(DAC);语句将SWTRIG寄存器置位,以开始数字量的转换,但是测试未能正常输出,想咨询一下原因?谢谢。
|
|