刷新uC时在STM32F4上更新RTC

时间:2018-09-11 10:45:44

标签: stm32 iar

当程序上传到STM32F4上时,是否可以用计算机信息更新RTC?例如,计算机上的日期和小时信息是:12h40 11/09/2018,当我用IAR / AC6刷新微控制器时,RTC设置为这些信息吗?

4 个答案:

答案 0 :(得分:0)

我的想法是制作一个在刷新后运行的脚本(我对IAR不熟悉,但希望可以在FLASH之后运行某些东西),并且该脚本将在当前时间通过调试端口RTC寄存器进行设置。 / p>

如果您使用ST-Link / V2硬件进行刷新,并且对python有任何经验,则可以使用该pyswd库。很简单,只需在python脚本中获取实际时间并在连接的MCU中设置适当的寄存器即可。

答案 1 :(得分:0)

据我所知,您有两个选择:

  1. 将PC时间放入固件中。为此,您可以使用一些内存区域来构建固件,甚至可以使用专用于实时值的Makefile来构建固件,该文件在构建期间由脚本填充。固件首次运行时,它将从这些位置读取并更新RTC。如果您采用这种方法,则时间总是很长,取决于构建固件并将其下载到设备所需的时间。
  2. 在第一次开机时写下PC时间。为此,您需要PC与设备之间的接口以及PC上运行的应用程序。将命令该应用获取当前PC时间并通过接口(例如,串行电缆)将其发送到设备,然后将更新RTC。这是一种更好的方法,因为设备时间将与PC时间更加紧密地耦合在一起,您也可以编写脚本。缺点是您必须构建界面。

此外,请考虑一下您的应用程序是否实际需要“实时”。许多嵌入式设备可以处理相对时间,例如自上电以来经过的毫秒数。

答案 2 :(得分:0)

您可以通过SWD(或JTAG)修改大多数端口寄存器,方法与闪存和RAM地址相同。

也许某些预算级别的调试适配器缺少可编写脚本的选项,但至少适配器的主流范围允许您将值写入CPU可通过内部总线到达的任何地址(AHB,APBx等)。 如果您仔细阅读了参考手册,则至少可以找出必须分配的寄存器的原始地址(和位模式)。 如果幸运的话,调试适配器的软件工具甚至可以为您提供一项功能,使您可以使用大量的语法糖来完成此操作-无需深入研究手册。

答案 3 :(得分:-2)

IMO最简单的方法是修改openOCD TCL脚本以上传(刷新后)小程序,该小程序将更新RTC。 15分钟的工作