关于对GD32H7系列的中断优先级寄存器的名称疑惑的解释
本帖最后由 dffzh 于 2025-5-14 11:17 编辑最近协助一位网友解决了关于GD32H系列的中断优先级寄存器的名称不一样的问题,即官方demo程序里的名称是IP,而core_cm7.h文件使用的是IPR,导致程序编译错误;今天又看到一位网友发帖咨询这个问题,因此我就写个帖子帮大家解释一下,希望有参考价值。之前那位网友发的帖子大概如下:
官网下载GD32H7xx_Demo_Suites_V2.1.0包解压后,进入./GD32H7xx_Demo_Suites_V2.1.0/GD32H759I_EVAL_Demo_Suites/Projects/目录,该目录下有29个例程,均编译错误,错误信息提示gd32h7xx_misc.c 第101行报错,如下:
这是101行附近代码:
我将101行修改为 NVIC->IPR[(uint8_t)nvic_irq] = (uint8_t)temp_priority; 后所有例程均可编译通过,但官方标准库我不敢改。。。
使用的编译器是keil ac6 v6.22,官方库使用原解压包自带的不行我又再官网下载GD32H7xx_Firmware_Library_V1.4.0版本的替换,错误依旧
附官网例程下载链接: https://www.gd32mcu.com/data/documents/evaluationBoard/GD32H7xx_Demo_Suites_V2.1.0.7z
我看了GD32F470ZGT6芯片的工程,NVIC的中断优先级寄存器确实是IP:
不过确实,按照NVIC其他寄存器的写法,这个寄存器应该命名为IPR更为合理。
从例程中查看到core_cm7.h的NVIC的中断优先级寄存器确实是IPR:
但官方库文件gd32h7xx_misc.c引用了IP这个成员:
我本来猜测可能是GD32H系列是新品,或者GD32F系列和H系列的库是不同产品线的人开发的。
后面这位热心网友也回复了:
得到了代理商技术支持的回复:
这个core_cm7.h是内核一些东西,是arm公司提供,arm公司更新了,而gd这边程序还没有更新,会反馈给gd。
他使用的固件库版本是GD32H7xx_Firmware_Library_V1.4.0,如果有和他使用相同版本遇到同样问题的可以大胆的将IP更改为IPR。
页:
[1]