[ZLG-ARM] LPC2292外部中断设置的奇怪问题

[复制链接]
2557|2
 楼主| infree 发表于 2007-9-27 11:00 | 显示全部楼层 |阅读模式
现在的现象是如果执行#if&nbsp;1&nbsp;和#endif&nbsp;之间的操作,会使得uart0的波特率增加1&nbsp;倍(1200bps变成2400bps),但是UART0的LCR,DLM,DLL三个寄存器的值在执行这个操作前后并没有变化;<br /><br />如果不执行#if&nbsp;1&nbsp;和#endif&nbsp;之间的对EXTMODE及EXTPOLAR的写操作(屏蔽掉语句1和语句2),发现UART0的LCR寄存被改变成(00),其余未变,按原来的波特率在发出0xAA&nbsp;的情况下可以收到0xEA,(如果在PC接收端设定成5位数据,则收到0x0A).<br /><br />另:在执行这个函数时,中断一直是关闭的。<br /><br />&nbsp;<br /><br />uint8&nbsp;XXX_Ini(void)<br /><br />{<br />&nbsp;&nbsp;uint8&nbsp;err;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;extern&nbsp;void&nbsp;XXX_Handler(void);&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnClr&nbsp;=(1&nbsp;&lt&lt&nbsp;15);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;1&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(0x99);<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(0x99);<br /><br />&nbsp;&nbsp;&nbsp;err=EXTMODE;<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(err);<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(0x98);<br /><br />&nbsp;&nbsp;&nbsp;err=EXTPOLAR;<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(err);<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(0x97);<br /><br />&nbsp;&nbsp;&nbsp;err=EXTMODE;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EXTMODE=err|0x02;&nbsp;//EINT1&nbsp;as&nbsp;edge&nbsp;trigger&nbsp;--语句1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err=EXTMODE;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(err);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(0x96);&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;err=EXTPOLAR;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EXTPOLAR=err|0x02;&nbsp;//EINT1&nbsp;rising&nbsp;edge&nbsp;trigger--语句2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;err=EXTPOLAR;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(err);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;UART0_SEND_BYTE(0x95);<br />&nbsp;&nbsp;&nbsp;#endif&nbsp;<br />&nbsp;&nbsp;&nbsp;VICVectAddr13&nbsp;=&nbsp;(uint32)XXX_Handler;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;VICVectCntl13&nbsp;=&nbsp;(0x20&nbsp;|&nbsp;0x0f);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//EINT1中断通道分配到IRQ&nbsp;slot&nbsp;13<br /><br />&nbsp;&nbsp;&nbsp;EXTINT=0x02;<br /><br />&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;&nbsp;=&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;15);&nbsp;//使能EINT1&nbsp;中断<br /><br />}<br />
wlq_9 发表于 2007-9-27 13:29 | 显示全部楼层

老问题了

芯片BUG.看堪误.
 楼主| infree 发表于 2007-9-27 17:00 | 显示全部楼层

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

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

127

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部