You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ceedling搭配MPLABX XC8编译报NVMCON1bits未声明配置问题

报错根因

编译报错的核心是4处project.yml配置错误,导致XC8编译器无法正确识别目标芯片型号,无法加载PIC16F18325的SFR寄存器定义:

  1. 公共宏定义的key拼写错误:将:common错写为:commmon(多了一个m),配置的全局宏完全没有被注入编译参数
  2. 芯片型号宏大小写错误:配置的__PIC16f18325__不符合XC8的宏命名规则,正确宏为全大写的__PIC16F18325__,大小写不匹配会导致xc.h无法定位到对应芯片的头文件
  3. 环境变量名大小写不匹配::environment节点下定义的key是小写:mcu,但编译/链接工具参数中读取的是大写ENV['MCU'],Ruby读取环境变量严格区分大小写,直接导致-mcpu参数为空,XC8编译内置库(比如报错的__eeprom.c)时无法自动关联对应芯片的头文件
  4. 头文件路径配置错误:将具体头文件pic16f18325.h的文件路径加入了include目录列表,C编译器只会把-I后的参数当做目录搜索,该配置无效。
修复步骤

直接修改project.yml对应节点即可:

  • 修正:defines节点的key拼写,同时修正芯片宏大小写:
:defines:
  :common: &common_defines
    - __PIC16F18325__
    - __XC8
    - UNITY_INT_WIDTH=16
    - UNITY_POINTER_WIDTH=16
    - CMOCK_MEM_INDEX_TYPE=uint16_t
    - CMOCK_MEM_PTR_AS_INT=uint16_t
    - CMOCK_MEM_ALIGN=1
    - CMOCK_MEM_SIZE=256
  :test:
    - *common_defines
    - UNITY_OUTPUT_COLOR
    - TEST
  :test_preprocess:
    - *common_defines
    - TEST
  • 修正:environment节点的变量名,和工具参数的读取逻辑保持一致,同时清理无效的path配置:
:environment:
  - :MCU: PIC16F18325
  - :mplabx_root: "C:/Program Files/Microchip/xc8/v2.36/"
  - :path:
    - "C:/Program Files/Microchip/xc8/v2.36/bin"
    - "#{ENV['PATH']}"
  • 修正:paths > :include节点,只保留有效头文件目录,删除指向具体头文件的无效条目:
:paths:
  :test:
    - +:test/**
    - -:test/support
  :source:
    - source/**
    - -:source/mcc_generated_files/docs
    - -:source/mcc_generated_files/examples
  :include:
    - "C:/Program Files/Microchip/xc8/v2.36/pic/include"
    - "C:/Program Files/Microchip/xc8/v2.36/pic/include/c90"
    - "C:/Program Files/Microchip/xc8/v2.36/pic/include/c99"
    - "C:/Program Files/Microchip/xc8/v2.36/pic/include/legacy"
    - "C:/Program Files/Microchip/xc8/v2.36/pic/include/proc"
  :support:
    - test/support
  :libraries: []
验证方法

修改完成后先执行ceedling clobber清空所有历史构建缓存,再重新执行测试构建命令。确认编译输出的参数中-mcpu=PIC16F18325、-D__PIC16F18325__正确传递后,__eeprom.c找不到NVMCON1bits的报错会直接消失。

内容的提问来源于stack exchange,提问作者Tim Trudeau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:36:27