打印

STM32的口要让它反转,么样实现?

[复制链接]
14330|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuoulyy|  楼主 | 2013-5-21 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机的口,反转很容易。sbit led = P1 ^6;  led = ~led;而STM32的口要让它反转,怎样实现呢?
沙发
IJK| | 2013-5-21 11:47 | 只看该作者
很容易,可以参考固件库:
  GPIOx->ODR ^= GPIO_Pin;

使用特权

评论回复
板凳
busdriver| | 2013-5-21 11:49 | 只看该作者
异或,你知道不。。
比如要将portb的bit0取反,那就GPIOB->ODR^=0x00000001,

使用特权

评论回复
地板
busdriver| | 2013-5-21 11:52 | 只看该作者
回帖时间几乎相等。。

使用特权

评论回复
5
mmuuss586| | 2013-5-21 12:26 | 只看该作者
这里效率很高的。:lol

使用特权

评论回复
6
liuoulyy|  楼主 | 2013-5-21 19:38 | 只看该作者
知道了,跟单片机一样,直接操作寄存器。

使用特权

评论回复
7
jiaxinhui| | 2013-5-22 08:09 | 只看该作者
如果你用库编程的话,就有现成的。

使用特权

评论回复
8
acgean| | 2013-5-22 08:49 | 只看该作者
异或, 都是异或。
不过, 同志们要注意。
表面看,好像都一样。其实,这里有很大的差别。

sbit led = P1 ^6;  led = ~led;
其实这里就 CPL 一条指令。

而STM32的口要让它反转,怎样实现呢?
还是异或, 其实还有别的手段,用 BITBAND,再++或--, 但不管怎么异或,都要读,修改,写的过程。起码3条指令。

AVR 也没有 CPL 这样的指令。 为了快速实现端口翻转(一条指令)。IO 端口特别做了设计,就是给引脚 pin 输入写1。
当然, 还有的芯片的 IO 口会有翻转寄存器。
可见也不是指令系统能限制的,或许在未来的芯片中,STM32 也会提供快速的 IO 口翻转的办法。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

472

帖子

1

粉丝