stm32为什么给有些寄存器赋值确不会影响其他位?USARTx->SR = (uint16_t)~USART_FLAG

来源:互联网 发布:青岛企业seo外包服务 编辑:程序博客网 时间:2024/04/30 09:13

新手小白可能会遇到的问题:stm32为什么给有些寄存器赋值确不会影响其他位?在stm32的库函数中可以看到有的关于位的操作不是用位与位或,而是直接赋值,但确不会影响其他位,例如:USARTx->SR = (uint16_t)~USART_FLAG,原因在于sr寄存器只能硬件置1,软件写1无效,关于这些寄存器的错作细则可以在stm32的手册中查询,

在对寄存器的描述中使用了下列缩写:
read / write (rw)
软件能读写此位。
read-only (r)
软件只能读此位。
write-only (w)
软件只能写此位,读此位将返回复位值。
read/clear (rc_w1)
软件可以读此位,也可以通过写’1’清除此位,写’0’对此位无影响。
read / clear (rc_w0)
软件可以读此位,也可以通过写’0’清除此位,写’1’对此位无影响。
read / clear by read (rc_r)
软件可以读此位;读此位将自动地清除它为’0’,写’0’对此位无影响。
read / set (rs)
软件可以读也可以设置此位,写’0’对此位无影响。
read-only write trigger (rt_w)
软件可以读此位;写’0’或’1’触发一个事件但对此位数值没有影响。
toggle (t)
软件只能通过写’1’来翻转此位,写’0’对此位无影响。
Reserved(Res.)
保留位,必须保持默认值不变

在查看寄存器时会看到这些标志,我们根据这些标志就可以知道怎么对寄存器操作了~

0 0
原创粉丝点击