中级会员
- 积分
- 494
- 威望
- 259
- 贡献
- 159
- 兑换币
- 161
- 注册时间
- 2013-3-27
- 在线时间
- 38 小时
|
void DMA_Init()
{
//DMA初始化,源地址:PTB_B0_IN,目的地址:buff,PTA7触发(默认上升沿),每次传输1字节,共传输 10次 ,传输结束后恢复地址
dma_portx2buff_init(DMA_CH1, (void * )&PTB_B0_IN, buff1, PTA1, DMA_BYTE1, 0X7FFF);
dma_portx2buff_init(DMA_CH2, (void * )&PTB_B1_IN, buff2,PTE0, DMA_BYTE1, 0X7FFF);
dma_portx2buff_init(DMA_CH0, (void * )&PTE_B2_IN, ucImageData, PTE31, DMA_BYTE1, 0X104); // PTA12
dma_repeat(DMA_CH0, (void *)&PTE_B2_IN, (void *)ucImageData,0X104);
port_init(PTE31, ALT1 | DMA_FALLING ); // PTA12
gpio_init(PTE31, GPI, 0); //设置为输入
DMA_IRQ_EN(DMA_CH0);
DMA_EN(DMA_CH0);
}
/************DMA中断服务函数********/
void DMA0_IRQHandler ()
{
DMA_IRQ_CLEAN(DMA_CH0);
DMA_DIS(DMA_CH0);
}
/*行采集*/
if(usGather[usGetHang] == vusHangCount) //如果是所需要的行,使能DMA传输
{
while(i--);
DMA_EN(DMA_CH0); //使能通道CHn 硬件请求
usGetHang++; //所需要的行
}
}
|
|