STM32GPIO位操作取反问题(关于~操作符)

如题,最近在学习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口操作就可以实现,为什么第一种写法对某一位就不能实现呢?

一见钟情 发表于11-28 08:43 浏览65535次
分享到:

已有1条评论

  • 粽子糖果
    粽子糖果 11-28 09:00

    仔细看下这几个操作函数(宏),尤其是这些返回值和传递参数的类型,你就可以明白了,反正我觉的stm32的库写的n恐怖,我自己一般都是直接操作寄存器,不要用他的那个库。

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

一见钟情
一见钟情(大校)
金币:1529个|学分:3659个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号