1 | CLK->CKDIVR = 0x00;
|
2 | CLK->PCKENR1 |= CLK_PCKENR1_DAC | CLK_PCKENR1_TIM4;
|
3 | CLK->PCKENR2 |= CLK_PCKENR2_DMA1;
|
4 |
|
5 |
|
6 | DMA1_Channel3->CCR &= (uint8_t)~(DMA_CCR_CE); //Disable the selected DMA Ch.
|
7 | DMA1_Channel3->CCR = DMA_CCR_RESET_VALUE;//Reset DMA Channelx
|
8 | DMA1_Channel3->CCR |= ((uint8_t)DMA_DIR_MemoryToPeripheral |
|
9 | (uint8_t)DMA_Mode_Circular |(uint8_t) DMA_MemoryIncMode_Inc);
|
10 | DMA1_Channel3->CSPR &= (uint8_t)~(DMA_CSPR_PL | DMA_CSPR_16BM);
|
11 | //Clear old priority and memory data size option
|
12 | DMA1_Channel3->CSPR |= ((uint8_t)DMA_Priority_VeryHigh |
|
13 | (uint8_t)DMA_MemoryDataSize_HalfWord);
|
14 |
|
15 | DMA1_Channel3->CNBTR = (uint8_t)sample_size;// Write to DMA Channelx CNBTR
|
16 | //--------------------------- DMA Channel3 CPAR Configuration
|
17 | DMA1_Channel3->CPARH = (uint8_t)(DAC_CH1RDHRH_ADDRESS >> (uint8_t)8);
|
18 | DMA1_Channel3->CPARL = (uint8_t)(DAC_CH1RDHRH_ADDRESS);
|
19 | //--------------------------- DMA Channel3 CMAR Configuration
|
20 | DMA1_Channel3->CM0ARH = (uint8_t)(WavesTab[tab_index] >> (uint8_t)8);
|
21 | DMA1_Channel3->CM0ARL = (uint8_t)(WavesTab[tab_index]);
|
22 | DMA1_Channel3->CCR |= DMA_CCR_CE;// DMA1 Channel 3 enable
|
23 | DMA1->GCSR |= (uint8_t)DMA_GCSR_GE; // Enable the DMA
|
24 |
|
25 |
|
26 | // DAC Channel1 Config: 12bit
|
27 | // Fill DAC Init param DAC_Trigger_T4_TRGO* and DAC Channel1 Init
|
28 | // DAC CR1 Config
|
29 | tmpreg1 = DAC->CH1CR1;
|
30 | tmpreg1 &= (uint8_t)~(DAC_CR1_TEN | DAC_CR1_TSEL );
|
31 | // Configure for the selected DAC channel: buffer output, trigger
|
32 | // Set BOFFx bit Output Buffer disable
|
33 | tmpreg1 |= (uint8_t)(DAC_CR1_BOFF );
|
34 | // Set TSELx and TEN bits according to DAC_Trigger value
|
35 | tmpreg1 |= (uint8_t)(DAC_CR1_TEN | DAC_Trigger_T4_TRGO) ;
|
36 | DAC->CH1CR1 = tmpreg1;
|
37 | DAC->CH1CR1 |= DAC_CR1_EN;
|
38 | DAC->CH1CR2 |= DAC_CR2_DMAEN;
|
39 |
|
40 | //********* TIM4 Config ********
|
41 | TIM4->ARR = (uint8_t)(0x4C);// output signal frequency ca 100Hz Range 1
|
42 | TIM4->PSCR = (uint8_t)(TIM4_Prescaler_16);
|
43 | tmpreg1 = TIM4->CR2;
|
44 | tmpreg1 &= (uint8_t)(~TIM4_CR2_MMS);
|
45 | tmpreg1 |= (uint8_t)TIM4_TRGOSource_Update;
|
46 | TIM4->CR2 = tmpreg1;
|
47 | TIM4->CR1 |= TIM4_CR1_CEN;
|