[ZLG-MCU] 急求:在uCOS移植模板的中间件层添加UART驱动编译出错?

[复制链接]
 楼主| 坚持梦想 发表于 2008-5-18 12:44 | 显示全部楼层 |阅读模式
我将EASYARM615实验例程中的《4.2UART驱动实验》添加到uCOS移植模板的中间件(Middleware)层上,结果编译时出现以下错误提示:<br />Error[Pe055]:&nbsp;too&nbsp;many&nbsp;arguments&nbsp;in&nbsp;macro&nbsp;invocation&nbsp;C:UART_OSuCOS-IIPortsos_cpu.h&nbsp;74<br /><br />错误出现的代码位置是(os_cpu.h):<br />#if&nbsp;OS_CRITICAL_METHOD&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;OS_ENTER_CRITICAL(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;OS_EXIT_CRITICAL(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#endif<br />这是什么原因呢,是不是我在配置时漏掉了什么,还是参数设置有问题?<br />以下是我所做的基本操作:<br />将Uart0.c和queue.c添加到Middleware目录下,在Startup.c中添加中断向量,在includes.h中添加相关头文件,在main.c中添加任务:taskUart,&nbsp;在target.c中的targetInit()中添加了Uart初始化代码Uart_Init()。<br />恳请指点!!!<br />
zlgarm 发表于 2008-5-19 08:38 | 显示全部楼层

搜索

搜索&nbsp;OS_ENTER_CRITICAL&nbsp;和&nbsp;OS_EXIT_CRITICAL有没有重复定义。<br /><br />(zlgarm_zsg)
 楼主| 坚持梦想 发表于 2008-5-19 10:52 | 显示全部楼层

能否说得具体些?

我搜索了之后,发现:<br />1、在queue.h文件中有以下语句:<br />#define&nbsp;OS_ENTER_CRITICAL()<br />#define&nbsp;OS_EXIT_CRITICAL()<br />2、在queue.c及Uart0.c中有多个函数调用到<br />OS_ENTER_CRITICAL();及OS_EXIT_CRITICAL();<br />3、函数的定义仅在os_cpu_a.asm中出现。但在各个OS文件中都出现了前述冲突。<br />
zlgarm 发表于 2008-5-19 18:40 | 显示全部楼层

重复定义了!!!

“在queue.h文件中有以下语句:<br />&nbsp;#define&nbsp;OS_ENTER_CRITICAL()<br />&nbsp;#define&nbsp;OS_EXIT_CRITICAL()&nbsp;”<br /><br />重复定义了!!!把它们处理掉!<br /><br />(zlgarm_zsg)
 楼主| 坚持梦想 发表于 2008-5-20 13:54 | 显示全部楼层

问题解决了,谢谢!

我把“#define&nbsp;OS_ENTER_CRITICAL()和#define&nbsp;OS_EXIT_CRITICAL()”删掉了,程序编译调试通过,谢谢!
 楼主| 坚持梦想 发表于 2008-5-21 11:07 | 显示全部楼层

还有个疑惑,能再解释一下吗?

为什么在queue.h文件中的语句:#define&nbsp;OS_ENTER_CRITICAL()和#define&nbsp;OS_EXIT_CRITICAL()&nbsp;是重复定义?<br />这个宏定义的格式似乎和我们通常所用的宏定义格式(#define&nbsp;XX&nbsp;YYY)有所不同,它的作用是什么?<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

39

帖子

0

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