这是因为如果操作ODR寄存器,需要先读出ODR寄存器,然后修改相应的位的值,再写回ODR,分为3步。而BSRR寄存器设置位,只需要对相应的设置或复位的位直接写1,其他位写0(BSRR只对写1有效,写0无意义,不影响原先位的电平),可以直接一步到位。这个在实时操作系统和中断会有比较大的意义,如果使用ODR寄存器,可能在读取ODR的值后,被其他优先级更高的操作打断(该高优先级的操作可能也操作了相应ODR),等到高优先级操作完成后再返回接着设置ODR,可能这个过程中ODR的值已经改变,若我们重新写入ODR,会覆盖更高优先级配置的值。