如题,小弟最近在学习STM32,遇到一个问题,向各位大虾请教。
对GPIO某位取反,小弟是这么写的
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction) ~GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0));
但是PA0口一直是高电平,不能取反。
但是如果写成这样
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction) !GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0));或
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction) (1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0)));
就可以实现,而且如果写成这样
GPIO_Write(GPIOA, ~GPIO_ReadOutputData(GPIOA))
也是可以实现的。
那么我就想问了,既然“~”是按位取反操作符,而且对整个PortA口操作就可以实现,为什么第一种写法对某一位就不能实现呢?
|