智能车制作

标题: 请教火哥关于野火底层库DMA测两路脉冲问题 [打印本页]

作者: czr27    时间: 2014-3-5 21:48
标题: 请教火哥关于野火底层库DMA测两路脉冲问题
火哥请问我为什么初始化了DMA计数 并修改好isr.c的中断函数,和isr.h重定义 DMA_count_Init(DMA_CH1, PTE26 ,0x4, DMA_rising);

void DMA_CH0_Handler(void)
{
    DMA_IRQ_CLEAN(DMA_CH0);                             //清除通道传输中断标志位    (这样才能再次进入中断)
    DMA_EN(DMA_CH0);                                    //使能通道CHn 硬件请求      (这样才能继续触发DMA传输)
    count_high[0]++;                                    //记录溢出次数
}


extern void DMA_CH0_Handler(void);        //DMA计数溢出中断

也EnableInterrupts;        我也屏蔽了其他的函数比如串口 但就是不进入中断 计数是有的 但是输入溢出的量没有触发中断计数少了
这可能是什么原因呢


作者: czr27    时间: 2014-3-5 21:49
初始化函数中有
/* 配置 DMA 触发源 */
    DMAMUX_CHCFG_REG(DMAMUX_BASE_PTR,CHn) = (0
                                            | DMAMUX_CHCFG_ENBL_MASK                        /* Enable routing of DMA request */
                                            | DMAMUX_CHCFG_SOURCE((ptxn>>5)+DMA_Port_A)     /* 通道触发传输源:     */
                                            );

    SIM_SCGC5 |= (SIM_SCGC5_PORTE_MASK<<(ptxn>>5));                                                                 //开启PORTx端口
    GPIO_PDDR_REG(GPIOx[(ptxn>>5)]) &= ~(1<<(ptxn&0x1f));                                                           //设置端口方向为输入
    PORT_PCR_REG(PORTX[(ptxn>>5)],(ptxn&0x1F))= ( 0
                                                | PORT_PCR_MUX(1)               // 复用GPIO
                                                | PORT_PCR_IRQC(cfg & 0x03 )    // 确定触发模式
                                                | ((cfg & 0xc0 )>>6)            // 开启上拉或下拉电阻,或者没有
                                                );
    GPIO_PDDR_REG(GPIOx[(ptxn>>5)])&=~(1<<(ptxn&&0x1F));                                                            //输入模式

    /* 开启中断 */
    DMA_EN(CHn);                                    //使能通道CHn 硬件请求
    DMA_IRQ_EN(CHn);                                //允许DMA通道传输


不懂为什么触发源一定是porta
作者: 易湘鑫    时间: 2014-3-5 21:54
上正交解码




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2