登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

7S64串口中断问题

作者:a123b123 栏目:ARM技术
7S64串口中断问题
下面是初始化程序,请大家帮我看看  为什么进不了中断??

void InitUSART0(void)
{

    AT91C_BASE_PIOA->PIO_PDR = DMX_RXD | DMX_TXD ;    //Disables the PIO from CONTROLling the corresponding pin (enables peripheral CONTROL of the pin).
    AT91C_BASE_PIOA->PIO_ASR = DMX_RXD | DMX_TXD;     //Assigns the I/O LINE to the Peripheral A function.
    AT91C_BASE_PIOA->PIO_BSR = 0;                     //Assigns the I/O LINE to the Peripheral B function.
    
    //enable the clock of USART
    AT91C_BASE_PMC->PMC_PCER = 1<<AT91C_ID_US0;
    
    //Set the USART mode
    AT91C_BASE_US0->US_MR =    AT91C_US_USMODE_NORMAL |    //普通模式
                                AT91C_US_CLKS_CLOCK    &    //时钟为MCK
                                ~AT91C_US_SYNC         |    //异步模式
                                AT91C_US_PAR_NONE      |    //无校验
                                AT91C_US_NBSTOP_1_BIT  |    //一位停止位
                                AT91C_US_MODE9           &    //9位数据位
                                ~AT91C_US_OVER                //16 倍重采样。OVER=0
                                ;
    
    //write the Timeguard Register
    AT91C_BASE_US0->US_TTGR = 0;
    
    //set baud rate divisor register
    AT91C_BASE_US0->US_BRGR = BAUD_CD; //((47923200)/(250000x16))    
    
    //Enable the RX and TX PDC transfer requests
    //AT91C_BASE_PDC_US0->PDC_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN;

    //Enable usart
    AT91C_BASE_US0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;  // 0x50;
    
    //使能接收结束中断&发送结束中断
    AT91C_BASE_US0->US_IMR = AT91C_US_ENDRX | AT91C_US_ENDTX ;
    
    //在AIC中设置US0中断优先级、中断入口、中断方式
    AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC,
                            AT91C_ID_US0,
                            US0_INTERRUPT_LEVEL,
                            AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
                            US0_irq_handler
                            );
    //在AIC中使能US0中断
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);                            
    

}

2楼: >>参与讨论
moise
re:7S64串口中断问题
hi,"a123b123"

在你的usart 初始化函数中,没有允许usart中断(设置 US_IER),也没有在AIC中使能US0 (最后一句的似乎应该为:AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);才对啊。 ) 。



3楼: >>参与讨论
a123b123
谢谢moise,还有问题请教
   
     我还没有搞懂  USART  PDC  AIC  之间的关系

        USART 不用PDC 怎样产生AIC中断?

        USART 用PDC 又怎样产生AIC中断?


      请赐教!


        

                     

4楼: >>参与讨论
moise
re:7S64串口
AIC中断控制器管理所有的中断,一个部件如果想要能产生中断,必须将AIC中相应的中断位使能(寄存其AIC_IECR,见数据手册AIC部分),同时允许本器件的中断 允许。PDC是的作用是为片上外设与片内或片外存储器间传输数据,使用外设数据控制器(PDC)提供的DMA方式避免处理器干涉并减去了处理器中断处理开销。在AT91SAM7中,每个外设都配有一个相对应的PDC ,如AT91C_BASE_PDC_US0 ,AT91C_BASE_PDC_DBGU等。

参与讨论
昵称:
讨论内容:
 
 
相关帖子
at91sam7se官方开发板上的nand flash是什么型号?
转让全新SAM-ICE,500元不还价,限上海。
新人提问,如何在 AT91SAM7A3 中加上看门狗.
350元 ARM9 AT91RM9200 自助学习板
7SE接LCD如何比较好?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号