硬汉嵌入式论坛

 找回密码
 立即注册
查看: 738|回复: 11
收起左侧

[CMSIS-RTOS] 求助!MDK V5.42 CMSIS RTOS2 STM32F103工程RTX5后编译报错note: 'SHP' declared here

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2025-5-24 18:05:58 | 显示全部楼层 |阅读模式
求助,使用cubemx创建F103C8T6工程,加入RTX5 RTOS2(API)编译,便出现如下错误:


C:/Users/Administrator/AppData/Local/Arm/Packs/ARM/CMSIS/6.1.0/CMSIS/RTOS2/Source/os_systick.c(64): error: no member named 'SHPR' in 'SCB_Type'; did you mean 'SHP'?
   64 |   SCB->SHPR[11]  = SYSTICK_IRQ_PRIORITY;
      |        ^~~~
      |        SHP
../Drivers/CMSIS/Include\core_cm3.h(382): note: 'SHP' declared here
  382 |   __IOM uint8_t  SHP[12U];               /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
      |                  ^
1 error generated.


我试过用改成源码方式还是报错,


把编译改成RAMCC  V5.06 不能使用RTOS2,
请教,这个地方该怎么修改呢?
工程源码:

RTX103.rar

890.7 KB, 下载次数: 1

F103RTX5工程

回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2025-5-24 21:35:15 | 显示全部楼层
{
  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
  __IOM uint8_t SHPR[12U];               /*!< Offset: 0x018 (R/W)SHP  System Handlers Priority Registers (4-7, 8-11, 12-15) */
  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
  __IM  uint32_t PFR[2U];                /*!< Offset: 0x040 (R/ )  Processor Feature Register */
  __IM  uint32_t DFR;                    /*!< Offset: 0x048 (R/ )  Debug Feature Register */
  __IM  uint32_t ADR;                    /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
  __IM  uint32_t MMFR[4U];               /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
  __IM  uint32_t ISAR[5U];               /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
        uint32_t RESERVED0[5U];
  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
} SCB_Type;把SHP改成SHPR也不对
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-5-25 10:04:31 | 显示全部楼层
cmsis6.x版本必须用ac6编译
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2025-5-25 17:36:09 | 显示全部楼层
我用F4建个工程测试,一样是这个问题、我怀疑会不会是版本不匹配。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-5-26 08:48:59 | 显示全部楼层
scmianyangzly 发表于 2025-5-25 17:36
我用F4建个工程测试,一样是这个问题、我怀疑会不会是版本不匹配。

改成ac6编译了没,务必要用ac6

然后就是此贴注意事项

【视频教程】踩坑排雷,手把手最新版MDK5.42联合STM32CubeMX使用RTE方式创建RTX5/FreeRTOS全家桶源码工程(2025-03-10)
https://forum.anfulai.cn/forum.p ... 7780&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2025-5-26 21:51:26 | 显示全部楼层
谢谢版主回复!编译是用的V6.23。

V6.23

V6.23
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2025-5-26 22:44:25 | 显示全部楼层
采用源码方式,修改出现__IOM uint8_t SHPR[12U]报错文件,改成:SHP[]
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-5-27 14:17:24 | 显示全部楼层
改结构体定义,2楼那样就可以了;
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-7-16 11:16:47 | 显示全部楼层
我也遇到相同的问题 解决了没
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
发表于 2025-7-16 19:37:20 | 显示全部楼层
gL510171877 发表于 2025-7-16 11:16
我也遇到相同的问题 解决了没

SHP改成SHPR,或者相反操作都可以。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-7-16 23:11:58 | 显示全部楼层
我已经定位到问题所在,确实是 CMSIS 版本不兼容导致的。具体来说:

版本冲突根源:
最新版 MDK 安装的是 CMSIS 6.0 + 版本
STM32F1 的 HAL 库包(STM32Cube_FW_F1_V1.8.6)中集成的是 CMSIS 5.0 版本
STM32CubeMX 生成代码时默认从本地 Cube 库中拷贝文件,导致项目中混用不同版本的 CMSIS 组件
解决方案:
通过手动同步 CMSIS 版本解决了问题:
plaintext
将MDK安装路径下的CMSIS文件(通常位于C:\Keil_v5\ARM\PACK\ARM\CMSIS\6.x.x)
覆盖到STM32Cube_FW_F1_V1.8.6\Drivers\CMSIS目录中
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-7-17 09:12:55 | 显示全部楼层
gL510171877 发表于 2025-7-16 23:11
我已经定位到问题所在,确实是 CMSIS 版本不兼容导致的。具体来说:

版本冲突根源:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 00:10 , Processed in 0.152656 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表