[其他产品] microchip C30 无法编译NOP() 定义了晶振也无法使用——delay—函数

[复制链接]
1316|15
 楼主| jcky001 发表于 2025-2-18 23:00 | 显示全部楼层 |阅读模式

microchip C30 无法编译NOP() 定义了晶振也无法使用——delay—函数
dongnanxibei 发表于 2025-2-21 15:37 | 显示全部楼层
应该是有其他的宏定义。比如加两个下划线。
dongnanxibei 发表于 2025-2-21 15:39 | 显示全部楼层
  1. #define NOP() __asm__ volatile ("nop")  // 单周期空操作
  2. #define NOP2() NOP(); NOP()            // 自定义多周期延时
huahuagg 发表于 2025-2-21 17:55 | 显示全部楼层
嗯,应该是没调用某个头文件。
慢醇 发表于 2025-2-23 00:03 | 显示全部楼层
如果系统时钟配置不正确,delay() 函数就无法按预期工作。
远芳侵古道 发表于 2025-2-23 05:33 | 显示全部楼层
可以尝试使用内联汇编实现 NOP():#define NOP() __asm__ volatile ("nop")
小明的同学 发表于 2025-2-23 10:39 | 显示全部楼层
直接使用 __asm__ volatile ("nop")  就可以。
dongnanxibei 发表于 2025-2-23 13:12 | 显示全部楼层
好像一个分号就可以代替。
突然下起雨 发表于 2025-2-25 15:26 | 显示全部楼层
如果晶振配置不正确,可能导致 Microchip C30 编译器无法识别 delay 函数或其他相关功能。
自动化陈稳 发表于 2025-4-27 01:08 | 显示全部楼层
检查是否启用了内联汇编的支持。C30 编译器允许通过 __asm 进行内联汇编,但如果编译器配置不正确,可能导致内联汇编代码无法识别。
自动化陈稳 发表于 2025-4-27 01:08 | 显示全部楼层
确保没有其他宏定义与 NOP() 名字冲突,可能会导致编译错误。
波尔街道的松柏 发表于 2025-9-26 12:03 | 显示全部楼层
Microchip C30 中 NOP () 需包含 < xc.h>,且确保编译器版本支持。delay 函数需正确配置晶振参数,在项目设置中匹配实际晶振频率,或手动定义延迟函数,用循环结合 NOP () 实现。检查头文件是否完整,避免命名冲突,必要时查阅芯片数据手册的延迟函数实现方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1650

主题

5706

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部