uint32_t mountain_get_element(uint32_t idx) { if (idx < mountain_length()) { return table_mountain[idx]; } else { for(;;); } }
static void init_dma(void) { RCC->AHBENR |= RCC_AHBENR_DMAEN; DMA1_Channel2->CPAR = (uint32_t)(&(DAC->DHR12R1)); DMA1_Channel2->CMAR = (uint32_t)table_mountain; DMA1_Channel2->CNDTR = mountain_length(); DMA1_Channel2->CCR |= DMA_CCR_DIR; //read from memory DMA1_Channel2->CCR |= DMA_CCR_CIRC; DMA1_Channel2->CCR |= DMA_CCR_PSIZE_0; //half word DMA1_Channel2->CCR |= DMA_CCR_MSIZE_0; //half word DMA1_Channel2->CCR |= DMA_CCR_MINC; DMA1_Channel2->CCR |= DMA_CCR_EN; }