【发布时间】:2021-09-21 09:53:37
【问题描述】:
我已经使用 stm32cubemx 启动了一个包含 HAL 库的项目,但似乎存在 HAL 和 MISRA-C 合规性问题。
我正在使用 Keil 进行软件开发,并添加了 PC-Lint(MISRA-C 检查器)来检查 C 标准。当我运行 PC-lint 检查 MISRA-C 规则时,我收到了许多由 HAL 命令产生的 MISRA-C 2012 违规规则。
注意,除了stm32cube生成的源文件之外,我没有输入任何源文件。
例如,生成的文件包含以下两行:
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)
但我因此收到这些错误:
: Note 934: Taking address of near auto variable 'GPIO_InitStruct' (arg. no. 2) [MISRA 2012 Rule 1.3, required]
__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)
我还收到很多其他错误。根据this,HAL 符合 MISRA C 2012。有什么问题?
【问题讨论】:
-
According to this根据...? -
对不起,我更正了链接; st.com/resource/en/brochure/brstm32cube.pdf
-
HAL and LL APIs are production–ready, developed in compliance with MISRA-C®:2012 guidelines and checked with CodeSonar static analysis tool. Reports are available on demand索取报告。声明是 API 是兼容的,而不是实现,我猜。 -
当你就这个问题联系他们时,他们说了什么?
-
我没有问他们,但是在st论坛上问的时候,有人回答说我使用的mcu型号,misra不支持。那也错了。
标签: c stm32 microcontroller hal misra