GPIO_Pin_x是一个引脚的,但只是表求的寄存器中的一位的值,所以,可以进行运算的
这里的异或就是将 ODR 寄存器对应的位取反,也就是将对应管脚的电平状态取反。
望采纳
GPIOA -> ODR ^= GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
展开为
GPIOA -> ODR =GPIOA -> ODR^( GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
因为GPIOA -> ODR一次控制16位输出,所以这里,除了设置的4个管脚,其余12个管脚对应位不会发生变化(按位异或特性),而设置的4个发生偏转。
注意这里GPIO_Pin_1、GPIO_Pin_2...分别代表对应位置1,而不是对应位状态。