- UID
- 1023166
- 性别
- 男
- 来自
- 燕山大学
|
#include "dma.h"
#include "delay.h"
u16 k;
void dma_init(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
u32 DR_Base;
RCC->AHBENR|=1<<0;
delay_ms(5);
DR_Base=cpar;
k=cndtr;
DMA_CHx->CPAR=DR_Base;
DMA_CHx->CMAR=(u32)cmar;
DMA_CHx->CNDTR=cndtr;
DMA_CHx->CCR=0X00000000;
DMA_CHx->CCR|=0<<4; // 从外设读
DMA_CHx->CCR|=0<<5; //不执行循环操作
DMA_CHx->CCR|=0<<6;
DMA_CHx->CCR|=0<<7; //执行存储器地址增量操作 执行外设地址非增量操作
DMA_CHx->CCR|=1<<8; //16位 储存器要与外设设置的位数一致
DMA_CHx->CCR|=1<<10; //16位
DMA_CHx->CCR|=1<<13; //通道优先级
DMA_CHx->CCR|=0<<14;
DMA_CHx->CCR&=~(1<<0); //关闭DMA传输
DMA_CHx->CNDTR=cndtr;
DMA_CHx->CCR|=1<<0; //开启DMA传输
}
void startdma(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_CHx->CCR&=~(1<<0);
DMA_CHx->CNDTR=k;
DMA_CHx->CCR|=1<<0;
} |
|