stvd+cosmic 编译问题,运算结果不正确

2019-12-12 18:19发布

typedef  unsigned long  u32;
typedef  unsigned char  u16;
typedef  unsigned char  u8;



#warning cpstm8 ..ds1302.c:702(44) truncating assignment
#warning cpstm8 ..ds1302.c:703(44) truncating assignment
#warning cpstm8 ..ds1302.c:704(43) truncating assignment
#warning cpstm8 ..ds1302.c:705(47) truncating assignment
     
              出现上述警告,使用cosmic +stvd

进入调适 ,查看变量 不是我要的,但在 keil arm compiler ok!!

u8  a,b,c,d;
u8   dat_arr [4];
u16 tmp,tmp1;
u32  cnt,result;
                cnt=0x33200532;

               
          dat_arr [0] =(cnt>>24);
         dat_arr [1] =(cnt>>16);
          dat_arr [2]=(cnt>>8);
          dat_arr [3]=(cnt& 0xFF);         


得到 dat_arr [0]=0x03;   dat_arr [1]=0x32;  dat_arr [2]=0x05;  dat_arr [3]=0x32;
我希望得到如下:
dat_arr [0]=0x33;
dat_arr [1]=0x20;
dat_arr [2]=0x05;
dat_arr [3]=0x32;

//=============================================
我需要将 4各字节分别组合起来成32bit,4各字节这个程序在keil arm ok,用在stvd+cosmic 如何可以让转换正常

    a =0x33;
    b=0x20;
   c=0x05;
    d=0x32;
   
   tmp=(u16)   (a<<8)+b;
    tmp1=(u16) (c<<8)+d;
   result=(tmp<<16) | tmp1;








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。