环境 - KEIL ARMcc v5.05编译器,LPC1769的ARMlink v5.05链接器
我也在其他一些论坛上问过这个问题,如果这看起来很熟悉的话。 我想创建一个可以重复使用相同或类似的基础项目 处理器。我正在尝试创建可以由宏定义/声明的中断处理程序,并且可以覆盖默认的弱定义。
有关。例如,我想写DBG端口处理程序,但我想要下一个人 只需更改头文件中的宏即可选择他想要的UART。
/ *以下宏将创建文本void UART0_IRQhandler * /
#define DBG_UART UART0
#define MAKE_IRQH(x) void x##_IRQHandler(void)
#define IRQH(x) MAKE_IRQH(x)
所以在我的dbg.c文件中我写了
IRQH(DBG_UART){
/*....... UART handling stuff ....*/
}
我的意图是,下一个人可以接受这个项目而只是改变说法 UART0到UART1并且不需要更改dbg.c文件。
上面的东西不起作用,我的代码仍然会遇到默认的弱处理程序 虽然void UART0_IRQhandler尚未定义。 你们有没有看到其他方法来实现这个目标?
答案 0 :(得分:1)
我在不同的地方使用相同的UART,我的错误。它现在有效。
答案 1 :(得分:0)
在设计宏时,您可能希望查看预处理器输出,例如与gcc -E
。
然后你可以发现错误:
#define IRQH() MAKE_IRQH(x)
实际上是:
#define IRQH(x) MAKE_IRQH(x)