سلام دوستان
من میخام کانتر محل ذخیره dma حین کار با uart و دریافت رو ریست کنم تا دفعه بعد که دیتا جدید میاد از خونه اول بافر دیتا رو بریزه نه از ادامه دیتا قبلی! چطوری اینکار کنم؟؟
نمایش نسخه قابل چاپ
سلام دوستان
من میخام کانتر محل ذخیره dma حین کار با uart و دریافت رو ریست کنم تا دفعه بعد که دیتا جدید میاد از خونه اول بافر دیتا رو بریزه نه از ادامه دیتا قبلی! چطوری اینکار کنم؟؟
سلام
خیلی ساده!
با توجه به اینکه از کدوم کانال و کدوم dma داری استفاده میکنی، هر جا تو برنامه خواستی ریست کنی این دستورات رو تو برنامه قرار بده:
البته حواست باشه دوباره فعالش کنی!کد:/* Disable the selected DMAy Channelx */
DMA1_Channel3->CCR &= (uint16_t)(~DMA_CCR1_EN);
/* Reset DMAy Channelx control register */
DMA1_Channel3->CCR = 0;
/* Reset DMAy Channelx remaining bytes register */
DMA1_Channel3->CNDTR = 0;
/* Reset DMAy Channelx peripheral address register */
DMA1_Channel3->CPAR = 0;
/* Reset DMAy Channelx memory address register */
DMA1_Channel3->CMAR = 0;
/* Reset interrupt pending bits for DMA1 Channel1 */
DMA1->IFCR |= DMA1_Channel3_IT_Mask_;
با دستورات hal ندارید؟؟