STM32 既然可以直接操作ODR,为什么还要设置BSRR和BRR?

我的意思是既然可以直接操作ODR,那么再通过BSRR或BRR来设置端口的值是不是很多余?

如果你想改变某个位的状态而不影响其他的,那用BSRR或BRR就很容易了。直接操作ODR需要“读-操作-写”的过程,速度反而变慢了。

比如说让PA1、PA3、PA7清零而不影响其他位的状态,那就是:
GPIOA->BRR=PA1|PA3|PA7;
你要用ODR来操作的话,那就变成这样了:
GPIOA->ODR&=~(PA1|PA3|PA7);
虽然C的语句都只有一个,但你看汇编代码,就发现使用BRR比ODR快的多。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答