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