Other Parts Discussed in Thread: C2000WARE
器件型号: C2000WARE
您好:
从 C2000Ware v26.00.00.00 导入和编译以下示例工程时遇到编译错误:
{C2000Ware}\device_support\f28p65x\examples\cpu1\led\led_ex1_blinky
==错误消息==
“C:/ti/C2000Ware_26_00_00_00/device_support/f28p65x/headers/include/f28p65x_device.h、第 73 行:错误#20:标识符“uint16_t"未“未定义
“C:/ti/C2000Ware_26_00_00_00/device_support/f28p65x/headers/include/f28p65x_device.h “、第 73 行:错误#839:cregister 'ifr'的类型非法
“C:/ti/C2000Ware_26_00_00_00/device_support/f28p65x/headers/include/f28p65x_device.h、第 74 行:错误#20:标识符“uint16_t"未“未定义
“C:/ti/C2000Ware_26_00_00_00/device_support/f28p65x/headers/include/f28p65x_device.h “、第 74 行:错误#839:cregister 'ier'的类型非法
==根本原因(可疑)==
在 v26.00.00.00 和 v5.05.xx 之间比较 f28p65x_device.h 时、IFR/IER 的声明如下所示进行了更改:
在 (v5.05.xx) 之前: extern __cregister volatile unsigned int IFR;
在 (v26.00.00) 之后:extern __cregister volatile uint16_t IFR;
似乎在 f28p65x_device.h 中使用了 uint16_t、之前没有#include 、导致编译器无法解析类型。
同一工程会在 C2000Ware v5.xx 和 v6.xx 下构建、没有错误。
==我尝试过的解决方法==
1.添加#include 在 f28p65x_device.h→中的 IFR/IER 声明正上方可解决该错误。
2.将 uint16_t 恢复为 unsigned int→也解决了该错误。
3.添加#include 在 main.c 的顶部、→不能解决该错误(因为标头本身是在 cregister 声明处可见 stdint.h 之前编译的)。
==问题==
C2000Ware v26.00.00.00 中是否有针对此问题的建议/正式修复?
具体而言、我想知道:
-这是 v26.00.00.00 中的已知错误,将在修补程序中解决吗?
-是否有一个编译器标志或预定义包含路径,以确保在处理器件头文件之前解析 stdint.h ?
-是否有任何其他不需要直接修改 C2000Ware 头文件的“干净“解决方案?
请提供任何指导。
==环境==
- C2000Ware:v26.00.00.00
-设备:F28P650DK9
- IDE:CCS Theia 20.2.0.12__1.8.0
-编译器:TI-CGT-C2000_22.6.2.LTS
谢谢你。