Cortex何时写入设备

问题描述

当写入Cortex M0上的设备寄存器(在我的情况下是STM32L073)时,会出现一个问题,即在a)排序对设备内存的访问以及b)确定对外围设备进行更改时应该多加小心配置实际上已经完成,以至于任何依赖项都变为有效。

以一个特定的示例将内部稳压器更改为其他电压。您将更改写入PWR-> CR,并从PWR-> CSR读取状态。我看到了执行以下操作的代码:

Write to PWR->CR to set the voltage range
Spin until (PWR->CSR & voltage flag) becomes zero

在我看来,这里有三个问题:

  1. 访问顺序。这是设备内存,因此相对于其他设备访问事务保留了事务顺序。我认为这意味着在写入CR和从CSR读取之间不需要DSB。一个链接的问题及其答案是:[ARM CortexA]Difference between Strongly-ordered and Device Memory Type

  2. 可以缓冲设备存储器。从CSR进行读取时,是否有可能继续写入CR。这将意味着电压标志将清除并且代码将继续。实际上,国旗还没有涨!

  3. 硬件响应时间。在写入和最终效果之间是否存在延迟?实际上,应该始终对此进行记录-对于STM32,文档中的文档明确地说,当CR寄存器更改时,该标志就被设置了。

这里是否存在比赛条件的可能性?真正让我担心的是缓冲-外设读取发生时外设写仍在进行中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)