no member named 'IP' in 'NVIC_Type'
我们在使用Keil 5编译器的AC6进行代码编译的使用,出现如下的错误;
当前的环境
-
编译器版本 Keil uVision5,V5.31.0.0;
-
CMSIS-Core 版本V6...1.0;
-
采用GD32F407VK主芯片,标准库版本
正常编译结果
问题分析
因为都是采用官方的库文件,并且编译器提示的是gd32f4xx_misc.c文件出现的问题,一般情况下gd32f4xx_misc.c是由GD官方编写的文件,出现问题的可能性不大;在之前的编译过程中并没有出现问题,突然又想到之前升级过CMSIS-Core的版本,随即查询了keil 提供的文档资料;找到真正存在的问题;截图如下:
超链接:https://arm-software.github.io/CMSIS_6/main/Core/core_revisionHistory.html#core6_changes
问题解决
在CMSIS-Core 6版本中,结构体 struct NVIC_Type中的成员 IP 名字更改为了IPR,瞬间恍然大悟,ARM竟然改了名字。真的不能当第一个吃螃蟹的人。双击编译窗口error提示的内容,定位到错误地方,修改代码。
修改后的代码如下所示:
NVIC->IPR[nvic_irq] = (uint8_t)temp_priority;
然后再进行重新的编译,编译通过, - 0 Error(s), 0 Warning(s).
参考文档:
https://arm-software.github.io/CMSIS_6/main/Core/core_revisionHistory.html#core6_changes