打印
[ZLG-MCU]

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

[复制链接]
1988|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
坚持梦想|  楼主 | 2008-5-18 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我将EASYARM615实验例程中的《4.2UART驱动实验》添加到uCOS移植模板的中间件(Middleware)层上,结果编译时出现以下错误提示:
Error[Pe055]: too many arguments in macro invocation C:UART_OSuCOS-IIPortsos_cpu.h 74

错误出现的代码位置是(os_cpu.h):
#if OS_CRITICAL_METHOD == 4
    void OS_ENTER_CRITICAL(void);
    void OS_EXIT_CRITICAL(void);     
#endif
这是什么原因呢,是不是我在配置时漏掉了什么,还是参数设置有问题?
以下是我所做的基本操作:
将Uart0.c和queue.c添加到Middleware目录下,在Startup.c中添加中断向量,在includes.h中添加相关头文件,在main.c中添加任务:taskUart, 在target.c中的targetInit()中添加了Uart初始化代码Uart_Init()。
恳请指点!!!

相关帖子

沙发
zlgarm| | 2008-5-19 08:38 | 只看该作者

搜索

搜索 OS_ENTER_CRITICAL 和 OS_EXIT_CRITICAL有没有重复定义。

(zlgarm_zsg)

使用特权

评论回复
板凳
坚持梦想|  楼主 | 2008-5-19 10:52 | 只看该作者

能否说得具体些?

我搜索了之后,发现:
1、在queue.h文件中有以下语句:
#define OS_ENTER_CRITICAL()
#define OS_EXIT_CRITICAL()
2、在queue.c及Uart0.c中有多个函数调用到
OS_ENTER_CRITICAL();及OS_EXIT_CRITICAL();
3、函数的定义仅在os_cpu_a.asm中出现。但在各个OS文件中都出现了前述冲突。

使用特权

评论回复
地板
zlgarm| | 2008-5-19 18:40 | 只看该作者

重复定义了!!!

“在queue.h文件中有以下语句:
 #define OS_ENTER_CRITICAL()
 #define OS_EXIT_CRITICAL() ”

重复定义了!!!把它们处理掉!

(zlgarm_zsg)

使用特权

评论回复
5
坚持梦想|  楼主 | 2008-5-20 13:54 | 只看该作者

问题解决了,谢谢!

我把“#define OS_ENTER_CRITICAL()和#define OS_EXIT_CRITICAL()”删掉了,程序编译调试通过,谢谢!

使用特权

评论回复
6
坚持梦想|  楼主 | 2008-5-21 11:07 | 只看该作者

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

为什么在queue.h文件中的语句:#define OS_ENTER_CRITICAL()和#define OS_EXIT_CRITICAL() 是重复定义?
这个宏定义的格式似乎和我们通常所用的宏定义格式(#define XX YYY)有所不同,它的作用是什么?

使用特权

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

本版积分规则

12

主题

39

帖子

0

粉丝