我可以解决使用多个延迟调用的问题。 仅供参考。 文档错误或存在错误。
根据 SPRUHV7C 中的表5-4–2014年7月–2018年7月修订
void _delay_cycles (unsigned int cycles); 针对指定的周期数改变 PRU 执行的延迟时间。
周期数必须是常数。
任何超过 int32_MAX (有符号整型)的值都会导致64位翻转错误。
警告! 第106行:[W0001]常数值超出范围,
将被截断为32位
LDI32 r0923372035781033983
在截断后、这会导致不正确的等待时间。
工具链版本号
PRU C/C++编译器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU EABI C/C++解析器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C/C++文件合并 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C/C++优化器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C/C++代码生成 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 汇编器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 嵌入实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C 源代码接口 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 链接器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 绝对列表器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 符号去除实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU XREF 实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C++还原器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 十六进制转换器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 名称实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 目标文件显示 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 归档器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
要重现的示例代码
#include <stdint.h> const uint32_t MAX_CYCLES_WITHOUT_ERROR = INT32_MAX; void main(void) { __delay_cycles(MAX_CYCLES_WITHOUT_ERROR); __delay_cycles(MAX_CYCLES_WITHOUT_ERROR+1); }