那么,为什么还“画蛇添足”地多出一个BRR寄存器呢?考虑只对端口写1的过程:很简单,对BSRR的低16位写1即可。假设有一个32-bit的变量dwPort,低16位对应着端口的pin的状态,高16位为0,如果设置pin为电平1,直接把dwPort赋值给BSRR即可(BSRR高16位被写了0,按STM32的设计,对应pin不受影响)。但如果设置pin为低电平0,就要麻烦一些:dwPort要先左移16个bit,再赋值给BSRR,即相当于对pin做了RESET操作。跟设置pin为1相比较,多了一个“左移16位”的操作。所以,特别设置了一个寄存器BRR,dwPort直接赋值给BRR,即相当于设置了对应的pin为0。
|