LPC2131的一个小问题!请指教?

[复制链接]
2749|1
 楼主| 李敬宁 发表于 2009-4-10 16:08 | 显示全部楼层 |阅读模式
我用的周立功的学习板,在做URAT0串口中断例程是出现了一些如下的问题:<br />compiling&nbsp;main.c...<br />MAIN.C(46):&nbsp;error&nbsp;C25:&nbsp;syntax&nbsp;error&nbsp;near&nbsp;'__irq'<br />MAIN.C(47):&nbsp;warning&nbsp;C35:&nbsp;'IRQ_UART0':&nbsp;uses&nbsp;old-style&nbsp;declarator<br />MAIN.C(154):&nbsp;warning&nbsp;C140:&nbsp;'IRQEnable'&nbsp;undefined;&nbsp;assuming&nbsp;'extern&nbsp;int&nbsp;IRQEnable()'<br />Target&nbsp;not&nbsp;created<br />程序是这样的:<br /><br />/****************************************Copyright&nbsp;(c)**************************************************<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;Guangzou&nbsp;ZLG-MCU&nbsp;Development&nbsp;Co.,LTD.<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;&nbsp;&nbsp;&nbsp;&nbsp;graduate&nbsp;school<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;http://www.zlgmcu.com<br />**<br />**--------------File&nbsp;Info-------------------------------------------------------------------------------<br />**&nbsp;File&nbsp;name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.c<br />**&nbsp;Last&nbsp;modified&nbsp;Date:&nbsp;&nbsp;2004-09-16<br />**&nbsp;Last&nbsp;Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0<br />**&nbsp;Descriptions:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;main()&nbsp;function&nbsp;example&nbsp;template<br />**<br />**------------------------------------------------------------------------------------------------------<br />**&nbsp;Created&nbsp;by:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chenmingji<br />**&nbsp;Created&nbsp;date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2004-09-16<br />**&nbsp;Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0<br />**&nbsp;Descriptions:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;original&nbsp;version<br />**<br />**------------------------------------------------------------------------------------------------------<br />**&nbsp;Modified&nbsp;by:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chenxibing<br />**&nbsp;Modified&nbsp;date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2005-01-17<br />**&nbsp;Version:<br />**&nbsp;Descriptions:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0通讯实验,中断方式,使用FIFO。<br />**<br />********************************************************************************************************/<br />#include&nbsp;&quot;config.h&quot;<br /><br />/*&nbsp;定义串口模式设置数据结构&nbsp;*/<br />typedef&nbsp;struct&nbsp;UartMode<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;datab;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;字长度,5/6/7/8可选<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;stopb;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;停止位,1/2可选<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;parity;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;奇偶校验位,0-无校验,1-奇校验,2-偶校验<br />}UARTMODE;<br /><br />uint8&nbsp;rcv_buf[8];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART0数据接收缓冲区<br />volatile&nbsp;uint8&nbsp;rcv_new;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;接收新数据标志<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:IRQ_UART0()<br />**&nbsp;函数功能&nbsp;:串口0接收中断服务程序<br />**&nbsp;入口参数&nbsp;:无<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />void&nbsp;__irq&nbsp;IRQ_UART0&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((U0IIR&nbsp;&&nbsp;0x0F)&nbsp;==&nbsp;0x04)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置接收到新的数据标志<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt8;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_buf&nbsp;=&nbsp;U0RBR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取FIFO的数据,并清除中断&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断处理结束<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:UART0_SendByte()<br />**&nbsp;函数功能&nbsp;:向串口0发送1字节数据<br />**&nbsp;入口参数&nbsp;:dat&nbsp;&nbsp;&nbsp;&nbsp;要发送的数据<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />void&nbsp;UART0_SendByte&nbsp;(uint8&nbsp;dat)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;U0THR&nbsp;=&nbsp;dat;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;要发送的数据<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:UART0_SendBuf()<br />**&nbsp;函数功能&nbsp;:向串口发送8字节数据<br />**&nbsp;入口参数&nbsp;:无<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />void&nbsp;UART0_SendBuf&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt8;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0_SendByte(rcv_buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((U0LSR&nbsp;&&nbsp;0x20)&nbsp;==&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待数据发送完毕<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:UART0_Init()<br />**&nbsp;函数功能&nbsp;:串口初始化,设置工作模式和波特率。<br />**&nbsp;入口参数&nbsp;:baud&nbsp;&nbsp;&nbsp;&nbsp;波特率<br />**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;&nbsp;&nbsp;&nbsp;模式设置(UARTMODE数据结构)<br />**&nbsp;出口参数&nbsp;:1-初始化成功,&nbsp;&nbsp;0-初始化失败<br />*********************************************************************************************************<br />*/<br />int8&nbsp;UART0_Init&nbsp;(uint32&nbsp;baud,&nbsp;UARTMODE&nbsp;set)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;bak;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;参数过滤&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((baud&nbsp;==0&nbsp;)&nbsp;||&nbsp;(baud&nbsp;&gt&nbsp;115200))&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((set.datab&nbsp;&lt5)&nbsp;||&nbsp;(set.datab&nbsp;&gt&nbsp;8))&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((set.stopb&nbsp;==&nbsp;0)&nbsp;||&nbsp;(set.stopb&nbsp;&gt&nbsp;2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(set.parity&nbsp;&gt&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置串口波特率&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x80;&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&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;&nbsp;&nbsp;=&nbsp;(Fpclk&nbsp;&gt&gt&nbsp;4)&nbsp;/&nbsp;baud;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLM&nbsp;=&nbsp;bak&nbsp;&gt&gt&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLL&nbsp;=&nbsp;bak&nbsp;&&nbsp;0xFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置串口模式&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;&nbsp;&nbsp;=&nbsp;set.datab&nbsp;-&nbsp;5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置字长<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(set.stopb&nbsp;==&nbsp;2)&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;|=&nbsp;0x04;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;判断是否为2位停止位<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(set.parity&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set.parity&nbsp;=&nbsp;set.parity&nbsp;-&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;|=&nbsp;0x08;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;bak&nbsp;|=&nbsp;set.parity&nbsp;&lt&lt&nbsp;4;&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;U0LCR&nbsp;=&nbsp;bak;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(1);<br />}<br /><br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:main()<br />**&nbsp;函数功能&nbsp;:从串口UART0接收字符串&quot;ABCDEFGH&quot;,并发送回上位机显示。<br />**&nbsp;调试说明&nbsp;:需要PC串口显示终端软件如EasyARM.exe。<br />*********************************************************************************************************<br />*/<br />int&nbsp;main&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;UARTMODE&nbsp;set;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;set.datab&nbsp;&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;set.stopb&nbsp;&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;set.parity&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000005;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置I/O连接到UART0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;UART0_Init(115200,&nbsp;set);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;串口初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;U0FCR&nbsp;=&nbsp;0x81;&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,并设置触发点为8字节<br />&nbsp;&nbsp;&nbsp;&nbsp;U0IER&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;允许RBR中断,即接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IRQEnable();&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;使能IRQ中断<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使能UART0中断&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置所有的通道为IRQ中断<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl0&nbsp;=&nbsp;0x20&nbsp;|&nbsp;0x06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART0分配到IRQ&nbsp;slot0,即最高优先级<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr0&nbsp;=&nbsp;(uint32)IRQ_UART0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置UART0向量地址<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;=&nbsp;1&nbsp;&lt&lt&nbsp;0x06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能UART0中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rcv_new&nbsp;==&nbsp;1)<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;rcv_new&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0_SendBuf();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />/*********************************************************************************************************<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;End&nbsp;Of&nbsp;File<br />********************************************************************************************************/<br /><br />
 楼主| 李敬宁 发表于 2009-4-14 11:10 | 显示全部楼层

为什么没有人指都呀!!

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

本版积分规则

5

主题

32

帖子

0

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