This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
DMA0的配置
dmaAddr = (unsigned int) &CCR0Time[ChN];
DMA0SZ = CCRX_NUM;
__data16_write_addr((unsigned short) &DMA0SA,TA0CCR0_);
__data16_write_addr((unsigned short) &DMA0DA,dmaAddr);
DMACTL0 = DMA0TSEL_1; //(Ta0CCR0.IFG)
DMACTL4 = DMARMWDIS ;
DMA0CTL = DMAEN + DMADT_0 + DMADSTINCR_3;
定时器配置
TA0CCTL0 = CM_3 + CCIS_0 + SCS + CAP; //TA0.0捕获
TA0CCTL0 &=~(COV + CCIFG);
P1SEL |= BIT1;
MCLK = 20M,SMCLK = 20M,捕获间断的信号,信号周期1us
现象:有时可以实现捕获,有时无法实现,没有任何捕获值。没有捕获值的情况往往伴随着cov的置位,请大家帮忙分析一下,谢谢!
代码如下,参考你发的例程,做了修改
CCRX_NUM = 50;
unsigned int CCR0Time[CCRX_NUM];
unsigned long dmaAddr;
ChN = 0;
memset(&CCR0Time,0,CCRX_NUM*2);
dmaAddr = (unsigned long) &CCR0Time[ChN];
DMA0SZ = CCRX_NUM;
__data16_write_addr((unsigned short) &DMA0SA,(unsigned long)(&TA0CCR0));
__data16_write_addr((unsigned short) &DMA0DA,dmaAddr);
DMACTL0 = DMA0TSEL_1; //(Ta0CCR0.IFG)
DMACTL4 = DMARMWDIS ;
TA0CCTL0 = CM_3 + CCIS_0 + SCS + CAP; //TA0.0捕获
TA0CCTL0 &=~(COV + CCIFG);
P1SEL |= BIT1;
DMA0CTL = DMAEN + DMADT_0 + DMADSTINCR_3;
等待1M信号过后,一般有50个左右个波形,查询寄存器CCR0Time,有时候有捕获数据,有时无捕获数据
DMA0CTL &= ~(DMAEN + DMAIFG);