欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

为什么GPIO置位与清零采用要分开?

程序员文章站 2022-03-05 16:54:18
...

在嵌入式系统开发中,用C语言进行位操作,设置管脚的值等是非常多的,在操作的同时我们有希望不要影响其他位的值,通常我们是要首先保存其他管脚的值,然后在设置,如我们置位PA01管脚(不采用C51的位操作):

PA->OUT&=~(1<<1);

置位操作:

PA->OUT|=1<<1;

语句结构是非常复杂的,而且要翻译成6条汇编指令。

引入置位与清零寄存器后,置位:

PA->OUTSET=1<<1;

清零:

PA->OUTCLR=1<<1;

指令结构非常简单,且一般大约翻译成2条汇编汇编指令。

为什么GPIO置位与清零采用要分开?

这样操作会影响其他管脚的值吗?答案是不会,以置位为例,只看2个管脚,看下表分析:

SET寄存器前值 SET寄存器后值 管脚前值 管脚后值 备注
00,01,10,11 01 00 01  
01 01  
10 11  
11 11  

代码易于理解,速度快(3倍)! 

相关标签: 嵌入式系统