这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » UART1 为什么UART1“代码”少时可以多时就有问题?

共2条 1/1 1 跳转至

UART1 为什么UART1“代码”少时可以多时就有问题?

院士
2006-09-17 18:14:16     打赏
UART1 为什么UART1“代码”少时可以多时就有问题?



关键词: UART1     为什么     代码     少时     可以     多时     有问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 如下代码,请大家看看有什么不妥?调试时,加载所有程序(25K,ARM2132),
UART1执行一次后,就不再进入中断,真是郁闷
        
         //TIME0中断设置
         T0TC   = 0;                    
    T0PR   = 0;            
    T0MCR  = 0x03;         
    T0MR0  = Fpclk / 1;
    T0TCR  = 0x01;            
       VICIntSelect = 0x00;        
    VICVectCntl2 = 0x20 | 0x04;                VICVectAddr2 = (uint32)IRQ_Timer0;    
    VICIntEnable = 1 << 0x04;
         //UART0设置
         U0LCR = 0x83;
    Fdiv = (Fpclk / 16) / SIM100_BAUD;
    U0DLM = Fdiv / 256;
    U0DLL = Fdiv % 256;
    U0LCR = 0x03;    
         U0FCR = 0x01;                    
        U0IER = 0x01;                        VICVectCntl0 = 0x20 | 0x06;        
         VICVectAddr0 = (uint32)IRQ_UART0;    
         VICIntEnable = 1 << 0x06;

         //uart1 中断设置
    set.datab  = 8;
    set.stopb  = 1;
    set.parity = 0;    
    U1LCR = 0X83;
    Fdiv = (Fpclk / 16) / GPS_BAUD;
    U1DLM = Fdiv / 256;
    U1DLL = Fdiv % 256;
    U1LCR = 0x03;
        
    U1FCR = 0x01;                        U1IER = 0x00;                        VICVectCntl1 = 0x20 | 0x07;        
    VICVectAddr1 = (uint32)IRQ_UART1;    
    VICIntEnable = 1 << 0x07;                
    IRQEnable();                         1: xx IRQEnable(); 放在U1LCR = 0X83;前试试。
//TIME0中断设置
//UART0设置
有没有使能IRQ中断?程序不全,别人不好理解,就更不好谈程序妥不妥了。

2: 换个方式试一下VICIntEnable = 1 << 0x04;
VICIntEnable = 1 << 0x06;
VICIntEnable = 1 << 0x07;
改为
VICIntEnable |= (1 << 0x04)|(1 << 0x06)|(1 << 0x07);

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]