清楚寄存器的属性是看懂手册并编程的基础,本文整理了STM32 数据手册中的寄存器属性缩写。
c
tmpreg = USB_OTG_OUTEP((uint32_t)epnum)->DOEPINT;
USB_OTG_OUTEP((uint32_t)epnum)->DOEPINT = tmpreg;
最近看一段代码,发现读一个寄存器又将值写回,稍有不解。
看手册后发现寄存器属性是**rc_w1**,遂继续查看手册总结下表:
| 缩写 | 英文全称 | 中文含义 | 详细描述 |
|---|---|---|---|
| rw | read/write | 读/写 | 软件既可以读取,也可以写入该位。 |
| r | read-only | 只读 | 软件只能读取该位,不能写入。 |
| w | write-only | 只写 | 软件只能写入该位。 读取该位时,返回的是复位值(默认值)。 |
| rc_w0 | read/clear write0 | 读/写0清除 | 软件可以读取该位。 写入 0 可以将该位清零。写入 1 对该位没有影响。 |
| rc_w1 | read/clear write1 | 读/写1清除 | 软件可以读取该位。 写入 1 可以将该位清零。写入 0 对该位没有影响。 |
| rc_w | read/clear write | 读/写清除 | 软件可以读取该位。只要对寄存器进行写操作 (无论写0还是写1),该位都会被清除。 |
| rc_r | read/clear by read | 读/读清除 | 软件可以读取该位。 读取操作会自动将该位清零。写入操作对该位无效。 |
| rs_r | read/set by read | 读/读置位 | 软件可以读取该位。 读取操作会自动将该位置 1。写入操作对该位无效。 |
| rs | read/set | 读/置位 | 软件可以读取该位,也可以将其置为 1(通常是通过写1)。写入 0 对该位无效。 |
| rwo | read/write once | 读/一次性写入 | 软件只能写入一次,但随时可以读取。只有复位(Reset)操作才能让它回到初始状态。 |
| t | toggle | 翻转 | 软件可以通过写入 1 来翻转该位的状态 (0变1,或1变0)。写入 0 无效。 |
| rt_w1 | read-only write trigger | 只读/写1触发 | 软件可以读取该位。 写入 1 会触发某个硬件事件,但不会改变该位本身的值。 |
| Res. | Reserved | 保留 | 保留位,必须保持其复位时的默认值,不要去修改它。 |