c - XC8 编译器无法识别 __delay 宏
问题描述
我想对 ATtiny85 微控制器进行编程,并意识到我的程序需要一些延迟才能正常工作。我正在使用 MPLabX 和 XC8 编译器。所以我应该能够使用 __delay_ms() 宏并且 MPLab 确实可以识别该宏并且不会将红线放在代码下方。但是,当我尝试编译程序时,在我使用宏的每一行都会抛出一个错误。“对 __delay_ms 的未定义引用”以及使用宏的第一行的附加“__delay_ms 的隐式声明”。我确实正确定义了 _XTAL_FREQ 并包含 xc.h。
该代码在没有延迟宏的情况下也可以正常编译,但是它不能正常工作,所以我需要延迟。
我不知道问题是什么。我之前用 __delay_ms 宏对其他微控制器进行了编程。我也在使用最新版本的 XC8 编译器。并且根据编译器的文档,该版本与 ATtiny85 完全兼容。
我也试图在互联网上找到解决方案,但没有找到任何有助于解决我的问题的方法......
问题可能出在哪里?
解决方案
所以我在 xc8 的包含目录中进行了更多挖掘,我发现了一些东西。如果我包含 util/delay.h 我可以使用这些函数,但只使用一个下划线而不是两个下划线。所以命令必须是_delay_ms()。然后我可以编译代码,但它缺少 F_CPU 的定义。然而,这只会导致警告而不是错误。我将尝试找出 F_CPU 的定义位置。我猜它是相对于某处的 _XTAL_FREQ 定义的......
我会及时通知你我能找到什么。
推荐阅读
- c++ - 移动带有新位置的 std::string 后的内存泄漏
- python - python中二维数组初始化的两种不同方式之间的区别
- sql-server - 找不到主体“dbo”,因为它不存在或您没有权限
- sql - 如何在sql语句中将数据从一个时间戳复制到另一个时间戳
- dpdk - DPDK 端口数必须是偶数
- python - 使用 Pandas 解析日期
- jmeter - 记录控制器在正文数据中显示 ocsp 数字证书和乱码
- firebase - 如何在 firebase 存储上上传多个文件并将访问 url 和元数据作为 json 或 csv 文件获取?
- python-3.x - 抛出唯一索引:重新索引仅对具有唯一值的索引对象有效
- c# - 如何通过变量名访问 C# struct 属性?