工具/软件:Code Composer Studio
您好,
我对这部分代码有问题:
静态void函数InError(SEC_checkErrorType_e错误,
sec_tmpErrors_s *tmpErrorVar, uint16_t checkIndex,
Bool autosResetError)
{
UINT32_t掩码;
//用于重置错误的计算掩码
掩码= 1UL <<检查索引;
掩码=(UINT32_t)~((UINT32_t)掩码);
}
掩码为UINT32_t 我尝试将每个元素类型转换为UINT32_t,但结果始终相同。
我希望行 掩码=(UINT32_t)~((UINT32_t)掩码);更改所有位,但只更改16个较低的位。 我不明白为什么。
这是不可拆卸的代码:
71 mask = 1UL << checkIndex;
3f4056: 0201 MOVB ACC,#1
3f4057: 563B LSLL 附件,T
3f4058: FF55 不 符合
3f4059: FF5A MOVL P,符合
当我处于调试模式时,ACC和P寄存器都正常(0xFFFFFFFE),但掩码不是(0x0000FFFE)。 在“表达式”窗口中,掩码地址为Register PL。 为什么?
我使用编译器v.17.3 .0。 使用O2优化水平。
我没有进行优化,但效果很好。 那么如何继续进行O2优化水平呢?
提前感谢。
Helene