首页 > 解决方案 > XC8 编译器无法识别 __delay 宏

问题描述

我想对 ATtiny85 微控制器进行编程,并意识到我的程序需要一些延迟才能正常工作。我正在使用 MPLabX 和 XC8 编译器。所以我应该能够使用 __delay_ms() 宏并且 MPLab 确实可以识别该宏并且不会将红线放在代码下方。但是,当我尝试编译程序时,在我使用宏的每一行都会抛出一个错误。“对 __delay_ms 的未定义引用”以及使用宏的第一行的附加“__delay_ms 的隐式声明”。我确实正确定义了 _XTAL_FREQ 并包含 xc.h。

该代码在没有延迟宏的情况下也可以正常编译,但是它不能正常工作,所以我需要延迟。

我不知道问题是什么。我之前用 __delay_ms 宏对其他微控制器进行了编程。我也在使用最新版本的 XC8 编译器。并且根据编译器的文档,该版本与 ATtiny85 完全兼容。

我也试图在互联网上找到解决方案,但没有找到任何有助于解决我的问题的方法......

问题可能出在哪里?

标签: cxc8attiny

解决方案


所以我在 xc8 的包含目录中进行了更多挖掘,我发现了一些东西。如果我包含 util/delay.h 我可以使用这些函数,但只使用一个下划线而不是两个下划线。所以命令必须是_delay_ms()。然后我可以编译代码,但它缺少 F_CPU 的定义。然而,这只会导致警告而不是错误。我将尝试找出 F_CPU 的定义位置。我猜它是相对于某处的 _XTAL_FREQ 定义的......

我会及时通知你我能找到什么。


推荐阅读