#include "init.h" // PA4 void GPIO_Ini(void) { GPIO_InitTypeDef gpio; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); gpio.GPIO_Pin = GPIO_Pin_4; gpio.GPIO_Mode = GPIO_Mode_AN; gpio.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &gpio); } void TIM_Ini(void) { TIM_TimeBaseInitTypeDef tim; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); tim.TIM_Prescaler = 0; tim.TIM_CounterMode = TIM_CounterMode_Up; tim.TIM_Period = 1000 - 1; tim.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM2, &tim); TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); TIM_Cmd(TIM2, ENABLE); } void DAC_Ini(void) { DAC_InitTypeDef dac; RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); dac.DAC_Trigger = DAC_Trigger_T2_TRGO; dac.DAC_WaveGeneration = DAC_WaveGeneration_None; dac.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(DAC_Channel_1, &dac); DAC_Cmd(DAC_Channel_1, ENABLE); DAC_DMACmd(DAC_Channel_1, ENABLE); } void DMA_Ini(uint16_t *buffer, uint32_t size) { DMA_InitTypeDef dma; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); DMA_DeInit(DMA1_Stream5); dma.DMA_Channel = DMA_Channel_7; dma.DMA_PeripheralBaseAddr = (uint32_t)&DAC->DHR12R1; dma.DMA_Memory0BaseAddr = (uint32_t)buffer; dma.DMA_DIR = DMA_DIR_MemoryToPeripheral; dma.DMA_BufferSize = size; dma.DMA_PeripheralInc = DMA_PeripheralInc_Disable; dma.DMA_MemoryInc = DMA_MemoryInc_Enable; dma.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; dma.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; dma.DMA_Mode = DMA_Mode_Circular; dma.DMA_Priority = DMA_Priority_High; dma.DMA_FIFOMode = DMA_FIFOMode_Disable; dma.DMA_MemoryBurst = DMA_MemoryBurst_Single; dma.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA1_Stream5, &dma); DMA_Cmd(DMA1_Stream5, ENABLE); }