各位朋友午安,小弟最近使用STM32F2系列的應用中,打算使用64位元的無號整數
紀錄64根GPIO狀態,但實作時發現輸出結果不如所想的那麼簡單,只有輸出到0~31位元
32位元在移位運算則是一點都沒有成功。不知道大家有無遇到這樣的情況,是否可解
另外小弟環境是使用eclipse+arm的交叉編譯器作開發。
驗證程式碼如下:
uint64_t test=0x0ull, count;
for(count=0; count<64; count++){
test |= ((uint64_t)1<<count);
printf("test[%d]=0x%016llx\r\n", (unsigned int)count, test);
}
數出結果:
est[0]=0x0000000000000001
test[1]=0x0000000000000003
test[2]=0x0000000000000007
test[3]=0x000000000000000f
test[4]=0x000000000000001f
test[5]=0x000000000000003f
test[6]=0x000000000000007f
test[7]=0x00000000000000ff
test[8]=0x00000000000001ff
test[9]=0x00000000000003ff
test[10]=0x00000000000007ff
test[11]=0x0000000000000fff
test[12]=0x0000000000001fff
test[13]=0x0000000000003fff
test[14]=0x0000000000007fff
test[15]=0x000000000000ffff
test[16]=0x000000000001ffff
test[17]=0x000000000003ffff
test[18]=0x000000000007ffff
test[19]=0x00000000000fffff
test[20]=0x00000000001fffff
test[21]=0x00000000003fffff
test[22]=0x00000000007fffff
test[23]=0x0000000000ffffff
test[24]=0x0000000001ffffff
test[25]=0x0000000003ffffff
test[26]=0x0000000007ffffff
test[27]=0x000000000fffffff
test[28]=0x000000001fffffff
test[29]=0x000000003fffffff
test[30]=0x000000007fffffff
test[31]=0x00000000ffffffff
test[32]=0x00000000ffffffff
test[33]=0x00000000ffffffff
test[34]=0x00000000ffffffff
test[35]=0x00000000ffffffff
test[36]=0x00000000ffffffff
test[37]=0x00000000ffffffff
test[38]=0x00000000ffffffff
test[39]=0x00000000ffffffff
test[40]=0x00000000ffffffff
test[41]=0x00000000ffffffff
test[42]=0x00000000ffffffff
test[43]=0x00000000ffffffff
test[44]=0x00000000ffffffff
test[45]=0x00000000ffffffff
test[46]=0x00000000ffffffff
test[47]=0x00000000ffffffff
test[48]=0x00000000ffffffff
test[49]=0x00000000ffffffff
test[50]=0x00000000ffffffff
test[51]=0x00000000ffffffff
test[52]=0x00000000ffffffff
test[53]=0x00000000ffffffff
test[54]=0x00000000ffffffff
test[55]=0x00000000ffffffff
test[56]=0x00000000ffffffff
test[57]=0x00000000ffffffff
test[58]=0x00000000ffffffff
test[59]=0x00000000ffffffff
test[60]=0x00000000ffffffff
test[61]=0x00000000ffffffff
test[62]=0x00000000ffffffff
test[63]=0x00000000ffffffff |