初级会员

- 积分
- 72
- 金钱
- 72
- 注册时间
- 2016-6-14
- 在线时间
- 19 小时
|
1金钱
void set(uint64_t data64)
{
u16 data16_1,data16_2,data16_3,data16_4;
u16 temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9,temp10,
temp11,temp12,temp13,temp14,temp15,temp16,temp17,temp18;
data16_1 = (u16)(data64 >> 48) & 0xffff;
data16_2 = (u16)(data64 >> 32) & 0xffff;
data16_3 = (u16)(data64 >> 16) & 0xffff;
data16_4 = (u16) data64 & 0xffff;
//D′GPIOA
temp1 = data16_4 & 0x1fff;
GPIO_Write(GPIOA, temp1);
//D′GPIOB
temp2 = data16_4 & 0x6000;
temp3 = data16_4 & 0x8000;
temp5 = data16_3 & 0x000F;
temp6 = data16_3 & 0x00F0;
temp4 |= temp2 >>13;
temp4 |= temp3 >>10;
temp4 |= temp5 <<6;
temp4 |= temp6 <<8;
GPIO_Write(GPIOB, temp4);
//D′GPIOC
temp7 = data16_3 & 0xFF00;
temp9 = data16_2 & 0x0001;
temp8 |= temp7 >>4;
temp8 |= temp9 <<12;
GPIO_Write(GPIOC, temp8);
//D′GPIOD
temp10 = data16_2 & 0xFFFE;
temp12 = data16_1 & 0x0001;
temp11 |= temp10 >>1;
temp11 |= temp12 <<15;
GPIO_Write(GPIOD, temp11);
//D′GPIOE
temp13 = data16_1 & 0x00FE;
temp14 |= temp13 >>1;
GPIO_Write(GPIOE, temp14);
//D′GPIOF
temp15 = data16_1 & 0x0F00;
temp16 |= temp15 <<3;
GPIO_Write(GPIOF, temp16);
//D′GPIOG
temp17 = data16_1 & 0xF000;
temp18 |= temp17 >>10;
GPIO_Write(GPIOG, temp18);
}
int main ()
{
gpio_Init();
gpio_reset();
set(18014398509744128);
}
换了se()函数里面好几个值,PC5,PC6,PC8都一直为高电平,set函数这样写对不对?求指点
|
|