打印
[ZLG-ARM]

LPC2292外部中断设置的奇怪问题

[复制链接]
1884|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
infree|  楼主 | 2007-9-27 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在的现象是如果执行#if 1 和#endif 之间的操作,会使得uart0的波特率增加1 倍(1200bps变成2400bps),但是UART0的LCR,DLM,DLL三个寄存器的值在执行这个操作前后并没有变化;

如果不执行#if 1 和#endif 之间的对EXTMODE及EXTPOLAR的写操作(屏蔽掉语句1和语句2),发现UART0的LCR寄存被改变成(00),其余未变,按原来的波特率在发出0xAA 的情况下可以收到0xEA,(如果在PC接收端设定成5位数据,则收到0x0A).

另:在执行这个函数时,中断一直是关闭的。

 

uint8 XXX_Ini(void)

{
  uint8 err; 

   extern void XXX_Handler(void);   

      VICIntEnClr =(1 << 15); 

    #if 1 

   UART0_SEND_BYTE(0x99);

   UART0_SEND_BYTE(0x99);

   err=EXTMODE;

   UART0_SEND_BYTE(err);

   UART0_SEND_BYTE(0x98);

   err=EXTPOLAR;

   UART0_SEND_BYTE(err);

   UART0_SEND_BYTE(0x97);

   err=EXTMODE;   

    EXTMODE=err|0x02; //EINT1 as edge trigger --语句1

     err=EXTMODE; 

    UART0_SEND_BYTE(err); 

    UART0_SEND_BYTE(0x96);    

    err=EXTPOLAR;

    EXTPOLAR=err|0x02; //EINT1 rising edge trigger--语句2

    err=EXTPOLAR;

     UART0_SEND_BYTE(err); 

   UART0_SEND_BYTE(0x95);
   #endif 
   VICVectAddr13 = (uint32)XXX_Handler; 

   VICVectCntl13 = (0x20 | 0x0f);     //EINT1中断通道分配到IRQ slot 13

   EXTINT=0x02;

   VICIntEnable  =  (1 << 15); //使能EINT1 中断

}

相关帖子

沙发
wlq_9| | 2007-9-27 13:29 | 只看该作者

老问题了

芯片BUG.看堪误.

使用特权

评论回复
板凳
infree|  楼主 | 2007-9-27 17:00 | 只看该作者

谢谢,我老早就怀疑是它的bug,只是以前一直没找到这个勘误

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

127

帖子

0

粉丝