[ZLG-ARM] 请教各位大侠 : LPC2368 的 UART2 问题

[复制链接]
2665|3
 楼主| kernel99 发表于 2008-6-4 15:26 | 显示全部楼层 |阅读模式
写了LPC2368&nbsp;的UART2的&nbsp;代码,可就是进不了中断<br />代码如下:<br />&nbsp;<br />//中断部分<br /><br />void&nbsp;__irq&nbsp;IRQ_UART2&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;&nbsp;&nbsp;&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((U2IIR&nbsp;&&nbsp;0x0F)&nbsp;==&nbsp;0x04)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置接收到新的数据标志&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&lt10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcvbuf2&nbsp;=&nbsp;U2RBR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取FIFO的数据,并清除中断&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i+=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i==10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U2IER&nbsp;=&nbsp;0x00;//进中断后暂时关闭中断<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断处理结束&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br /><br /><br />*********************************************************************************************************<br />*&nbsp;函数名称:&nbsp;UART2Init(&nbsp;INT32U&nbsp;baudrate&nbsp;)<br />*&nbsp;描&nbsp;&nbsp;&nbsp;&nbsp;述:&nbsp;串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率4800<br />*&nbsp;入口参数:&nbsp;<br />*&nbsp;出口参数:<br />*&nbsp;编&nbsp;写&nbsp;人:<br />*&nbsp;编写日期:<br />*&nbsp;修改日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />*********************************************************************************************************<br />*/<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART2Init(&nbsp;INT32U&nbsp;baudrate&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;INT16U&nbsp;Fdiv;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=(PINSEL0&0xff0fffff&nbsp;)|0x00500000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;RxD2&nbsp;and&nbsp;TxD2&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U2LCR&nbsp;=&nbsp;0x83;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;DLAB=1,允许设置波特率&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;Fdiv&nbsp;&nbsp;=&nbsp;(Fpclk&nbsp;/&nbsp;16)&nbsp;/&nbsp;baudrate;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置波特率&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;U2DLM&nbsp;=&nbsp;Fdiv&nbsp;/&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;U2DLL&nbsp;=&nbsp;Fdiv&nbsp;%&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;U2LCR&nbsp;=&nbsp;0x03;<br />&nbsp;&nbsp;&nbsp;&nbsp;//2007年5月30号更改,禁止使能FIFO<br />&nbsp;&nbsp;&nbsp;&nbsp;//U0FCR&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能FIFO,并设置触发点为1字节&nbsp;///<br />&nbsp;&nbsp;&nbsp;&nbsp;U2FCR=0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U2IER&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl2&nbsp;=&nbsp;0x20&nbsp;|&nbsp;0X1C;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART0分配到IRQ&nbsp;slot0,即最高优先级//<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr2&nbsp;=&nbsp;(INT32U)IRQ_UART2;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;=1&lt&lt28;//使能UART0中断&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />
zhongyb 发表于 2008-6-4 20:34 | 显示全部楼层

先打开电源位

LPC2368的UART2复位后,电源控制默认状态下是禁止的,初始化需要先打开电源位,即PCONP的24位。<br />PCONP|=0x01&lt&lt24;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;enable&nbsp;UART&nbsp;2&nbsp;power/clock&nbsp;*/<br />另外,UART3的电源控制默认状态下也是禁止,使用前也需要进行类似的设置。&nbsp;&nbsp;
boy123 发表于 2008-6-4 23:54 | 显示全部楼层

支持2楼.

  
yyccaa 发表于 2008-6-8 09:27 | 显示全部楼层

同意楼上

23xx的片内外设的相关寄存器设置只有打开了其对应的电源控制位后,程序才能对寄存器进行设置,否则设置是无效的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

93

主题

177

帖子

1

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