Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INTERRUPT_HANDLER(DMA1_CHANNEL2_3_IRQHandler,3)
- {
- static uint8_t i=0;
- extern uint8_t dac_buf[4][dac_buf_size/4];
- extern uint8_t half_buf;
- GPIOA->ODR|=(uint8_t)(GPIO_Pin_4);
- //remaining half of last buf part, 64 bytes
- if ((DMA1_Channel3->CSPR & DMA_CSPR_HTIF)&&(i==3))
- half_buf=1;
- if (DMA1_Channel3->CSPR & DMA_CSPR_TCIF) {//if bufpart ended
- DMA1_Channel3->CCR &= (uint8_t)(~DMA_CCR_CE);//dma disable
- DMA1_Channel3->CM0ARH = (uint8_t)((uint16_t)&(dac_buf[i]) >> (uint8_t)8);
- DMA1_Channel3->CM0ARL = (uint8_t)((uint16_t)&(dac_buf[i]));
- DMA1_Channel3->CNBTR=dac_buf_size/4;
- DMA1_Channel3->CCR |= (uint8_t)(DMA_CCR_CE);//dma enable
- i++;
- i&=0x03;
- }
- DMA1_Channel3->CSPR&=(uint8_t)(~(DMA_CSPR_TCIF|DMA_CSPR_HTIF));
- GPIOA->ODR&=(uint8_t)(~GPIO_Pin_4);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement