智能车制作
标题:
DAC 触发 DMA 传值的问题
[打印本页]
作者:
wbb12
时间:
2014-9-25 21:15
标题:
DAC 触发 DMA 传值的问题
下面是我的代码,想请教一下,为什么DMA似乎没有工作呢?
void pdb_init(void);
void dac_init(void);
void dma_L_init(void);
void dma_H_init(void);
void dac_isr(void);
void delay(uint16);
//变量定义
PIT_InitTypeDef pit0_init_struct;
DAC_InitTypeDef dac_init_struct;
PDB_InitTypeDef pdb_init_struct;
DMA_InitTypeDef dmaL_init_struct;
DMA_InitTypeDef dmaH_init_struct;
uint8 UP[32];
uint8 UL[16];
uint8 UH[16];
uint16 U[16];
uint16 T[16];
uint16 M[16];
uint16 V[32];
uint8 VP[64];
int count=0;
volatile uint8_t * const DL =&(DAC0->DAT[0].DATL);
volatile uint8_t * const DH =&(DAC0->DAT[0].DATH);
void main (void)
{
for(int i=0;i<16;i++){
V[i]=250*i;
}
for(int i=16;i<32;i++)
{
V[i]=250*(32-i);
}
for(int i=0;i<32;i++){
VP[i*2]=V[i]&0x0FF;
VP[i*2+1]=(V[i] & 0xF00)>>8;
}
/*
for(int i=0;i<16;i++){
T[i]=250*i;
M[i]=250*(16-i);
}
for(int i=0;i<16;i++)
{
U[i]=(uint16)(i*250);
}
for(int i=0;i<16;i++)
{
UL[i]=U[i]&0x0FF;
}
for(int i=0;i<16;i++)
{
UH[i]=(U[i] & 0xF00)>>8;
}
for(int i=0;i<32;i++)
{
UP[2*i]=UL[i];
UP[2*i+1]=UH[i];
} */
//初始化DAC
dac_init();
LPLD_DAC_SetBufferData(DAC0,V, 16);
dma_L_init();
pdb_init();
LPLD_PDB_SoftwareTrigger() ;
// LPLD_PDB_SoftwareTrigger();
}
void dac_init(void)
{
//仅需初始化DAC通道即可
dac_init_struct.DAC_Dacx = DAC0;
dac_init_struct.DAC_BufferEnable=TRUE;
dac_init_struct.DAC_BufferUpperLimit=16;
dac_init_struct.DAC_DmaEnable=TRUE;
dac_init_struct.DAC_ReadPointerTopIntEnable = TRUE;
//dac_init_struct.DAC_ReadPointerTopIsr = dac_isr;
//此处值得商榷!
LPLD_DAC_Init(dac_init_struct);
LPLD_DAC_EnableIrq(dac_init_struct);
}
void pdb_init(void)
{
pdb_init_struct.PDB_CounterPeriodUs=20000;
pdb_init_struct.PDB_TriggerInputSourceSel=TRIGGER_SOFTWARE;
pdb_init_struct.PDB_ContinuousModeEnable=TRUE;
pdb_init_struct.PDB_LoadModeSel = LOADMODE_0;
LPLD_PDB_Init(pdb_init_struct);
LPLD_PDB_DacTriggerCfg(DAC0,INT_TRIG_EN,2000);
}
/*
* 延时函数
*/
void dma_L_init(void){
dmaL_init_struct.DMA_CHx=DMA_CH0;
dmaL_init_struct.DMA_Req=DAC0_DMAREQ;
dmaL_init_struct.DMA_MajorLoopCnt=2;
dmaL_init_struct.DMA_MinorByteCnt = 32;
dmaL_init_struct.DMA_SourceAddr=(uint32)&(VP[0]);
dmaL_init_struct.DMA_SourceDataSize = DMA_SRC_8BIT;
dmaL_init_struct.DMA_SourceAddrOffset=32;
dmaL_init_struct.DMA_LastSourceAddrAdj=-64;
dmaL_init_struct.DMA_DestAddr =(uint32)&(DAC0->DAT[0].DATL);
dmaL_init_struct.DMA_DestAddrOffset=0;
dmaL_init_struct.DMA_LastDestAddrAdj=-16;
dmaL_init_struct.DMA_DestDataSize = DMA_DST_8BIT;
dmaL_init_struct.DMA_AutoDisableReq = FALSE;
LPLD_DMA_Init(dmaL_init_struct);
LPLD_DMA_EnableReq(DMA_CH0);
}
复制代码
作者:
whisker
时间:
2014-9-25 22:01
作者:
wbb12
时间:
2014-9-26 18:34
whisker 发表于 2014-9-25 22:01
这是水经验的节奏么?
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2