連線埠位設定/清除暫存器
stm32中常見的一種處理連線埠的方式
定義,性質,套用,
定義
該暫存器的地址偏移為0x10,復位值為0x0000 0000
性質
位 | 描述 |
位31:16 | BRy:清除連線埠x的位y(y=0...15) 這些位只能寫入並只能以字(16位)的形式操作 0:對對應的ODRy位不產生影響 1:清除對應的ODRy位為0 |
位15:0 | BSy:設定連線埠x的位y(y=0...15) 這些位只能寫入並只能以字(16位)的形式操作 0:對對應的ODRy位不產生影響 1:清除對應的ODRy位為1 |
註:如果同時設定了BRy和BSy的對應位,BSy起作用。
套用
GPIOx->BSRR = GPIO_Pin; //連線埠位設定或清除
註:GPIO_Pin為(0..15)中任意接口
有了GPIOx->BRR清除暫存器,並且與GPIOx->BSRR高16為功能相同,有人問是否BSRR的高16位是多餘 的,請看下面的例子:
假如你想在一個操作中對GPIOE的位1置'1',位15置'0',則使用BSRR非常方便:
GPIOE->BSRR = 0x80000002;
低16位中的0002將位1置‘1’,高16位中的8000將位15置清零,一步就可以做到。
如果沒有BSRR的高16位,則要分2次操作,結果造成位1和位15的變化不同步!
GPIOE->BSRR = 0x02;
GPIOE->BRR = 0x8000;