您的位置:首页 > 产品设计 > UI/UE

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

2015-08-12 18:00 435 查看
新手小白可能会遇到的问题: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.)

保留位,必须保持默认值不变

在查看寄存器时会看到这些标志,我们根据这些标志就可以知道怎么对寄存器操作了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32