试一下这个程序:
/******************************************************************************/
#include <device.h>
#include <VDAC8.h>
#define REQUEST_PER_BURST (1u)
#define BYTES_PER_BURST (2u)
#define UPPER_SRC_ADDRESS CYDEV_PERIPH_BASE
#define UPPER_DEST_ADDRESS CYDEV_PERIPH_BASE
void DMA_Config(void);
CY_ISR(filterVDAC)
{
VDAC8_SetValue((uint8)(Filter_Read16(Filter_CHANNEL_A)>>8));
}
void main()
{
/* Start all components used on schematic */
ADC_DelSig_IRQ_Start();
isr_StartEx(filterVDAC);
ADC_DelSig_Start();
ADC_DelSig_StartConvert();
VDAC8_Start();
Opamp_Start();
Filter_Start();
Filter_DALIGN_REG = 0x00;
Filter_SetCoherency(Filter_CHANNEL_A, Filter_KEY_LOW);
/* User-implemented function to set-up DMA */
DMA_Config();
/* Enable Global Interrupts */
CYGlobalIntEnable;
for(;;)
{
}
} /* End of main */
void DMA_Config(void)
{
/* Declare variable to hold the handle for DMA channel */
uint8 channelHandle;
uint8 tdChanA;
channelHandle = DMA_DmaInitialize(BYTES_PER_BURST, REQUEST_PER_BURST,
HI16(UPPER_SRC_ADDRESS), HI16(UPPER_DEST_ADDRESS));
tdChanA = CyDmaTdAllocate();
CyDmaTdSetConfiguration(tdChanA, 2u, DMA_INVALID_TD, 0u);
CyDmaTdSetAddress(tdChanA, LO16((uint32)ADC_DelSig_DEC_SAMP_PTR), LO16((uint32)Filter_STAGEA_PTR));
CyDmaChSetInitialTd(channelHandle, tdChanA);
CyDmaChEnable(channelHandle, 1u);
}
/* [] END OF FILE */
/*************************************************************************************/ |