基于STM32L4的LL库DAC输出:
通过下面两个函数开启DAC并设置输出值。
LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_1);//启动DAC选择的通道
LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_1, 0);//在数据保存寄存器中设置要加载的数据
void MX_DAC1_Init(void)
{
LL_DAC_InitTypeDef DAC_InitStruct = {0};
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
/* Peripheral clock enable */
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_DAC1);
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
/**DAC1 GPIO Configuration
PA4 ------> DAC1_OUT1
*/
GPIO_InitStruct.Pin = LL_GPIO_PIN_4;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* DAC1 interrupt Init */
NVIC_SetPriority(TIM6_DAC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
NVIC_EnableIRQ(TIM6_DAC_IRQn);
/** DAC channel OUT1 config
*/
DAC_InitStruct.TriggerSource = LL_DAC_TRIG_SOFTWARE;
DAC_InitStruct.WaveAutoGeneration = LL_DAC_WAVE_AUTO_GENERATION_NONE;
DAC_InitStruct.OutputBuffer = LL_DAC_OUTPUT_BUFFER_ENABLE;
DAC_InitStruct.OutputConnection = LL_DAC_OUTPUT_CONNECT_GPIO;
DAC_InitStruct.OutputMode = LL_DAC_OUTPUT_MODE_NORMAL;
LL_DAC_Init(DAC1, LL_DAC_CHANNEL_1, &DAC_InitStruct);
LL_DAC_DisableTrigger(DAC1, LL_DAC_CHANNEL_1);
LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_1);//启动DAC选择的通道
LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_1, 0);//在数据保存寄存器中设置要加载的数据
}
/*设置的DAC:0-3300*/
void Dac_Write(uint16_t value)
{
uint32_t temp;
temp = value * 4095 / 3300;
LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_1, temp);
}