米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

KEIL MDK提示:warning: #61-D: integer operation result is out of

问题类别: > 浏览次数:8845
发布日期:2012/4/23 17:14:55 文章来源:米尔科技
回复日期:2020/12/20 9:56:42

环境说明

KEIL MDK中国版3.05 及以上

分析描述

rBDICNT0 = (3<<30) | (1<<26) | (3<<22) | (1<<20) | 216; Code\initialize.c(73): warning: #61-D: integer operation result is out of range. rBDICNT0 是寄存器变量,无符号型的,只要变量值到达31位就出这样的警告。

问题解答

      问题分析:
      MDK-ARM中国版所使用的编译器是严格检查赋值是否会产生溢出的及符号改变的,从而上述警告是正常的。
      问题解决:
      可以修改为:
      rBDICNT0 = (3U<<30)|....; 或者rBDICNT0 = ((u32)3<<30)|....; 就可以避免警告了。