主题中讨论的其他器件: MSP430FR59471
我将使用用于 c 的 MSP430头文件、特别是 msp430fr5738.h 和 msp430fr59471.h 通过 MISRA 代码检查测试运行代码会由于这些头文件中的#define 导致一些违反。 尤其是寄存器访问。 该寄存器定义为无符号整数、但位设置定义为有符号整数。 由于数据类型不匹配、这会导致违反。
例如、在示例项目中、第一行通常如下所示:
WDTCTL = WDTPW + WDTHOLD;
WDTCTL 定义为 SFR_16BIT (WDTCTL)
其中:#define SFR_16BIT (address) extern volatile unsigned int 地址
WDTPW 定义为(0x5A00)
WDTHOLD 定义为(0x0080)
WDTCTL 是一个无符号整数、而 WDTPW 和 WDTHOLD 是定义为有符号整数的。
TI 是否提供了这些头文件的版本以及寄存器分配的正确定义? 例如、WDTPW AS (0x5A00U)? 因为这样做实际上是为了通过业界常用的 MISRA 软件标准。
谢谢、
Matt