2013-11-25 34 views
0

您好,我是一名菜鳥C程序員,我的微控制器上的RTC出現問題,它會重置電源重置時的日期,但不會更新日期通常,我已經遵循了RTC的正確初始化,但是當我做一個「getdate」時,日期在小時數超過24時保持不變,我使用ST32提供的STM32F2微控制器API。如何在C中爲STM32F2重置處理器

我可以強制重置處理器來更新日期,因爲硬件重置會更新日期。

回答

0

要回答這個直接的問題,通常你可以強制對這種處理器的硬件復位通過讓看門狗到期:

  • 如果它已經被配置爲使復位,然後就旋在爲( ;;){}循環直到它到期
  • 如果看門狗尚未配置,則將其配置爲導致具有最小超時的復位,然後旋轉。

看門狗復位通常是非常接近正常上電硬件復位的近似值。所有這一切說,我強烈建議你追逐與RTC的問題,並不要分心自己的一些可怕的重置黑客。

首先試圖避免使用ST提供的'API'形式的任何craptastic代碼 - 這種代碼往往是由可怕的宿醉書寫的實習生寫的,值得看看的例子,但很少有足夠的實際適用性。試圖在不瞭解它的情況下使用它幾乎總是隻是一個拖延時刻的痛苦方式,當你必須打開芯片的數據表/用戶指南並掌握它的工作原理時。

你不說你使用什麼處理器,但是這個頁面559可能是有用的:

http://www.st.com/web/en/resource/technical/document/reference_manual/CD00225773.pdf

絕對清楚你做,因爲該過程的每個步驟是關於初始化日曆的一些東西,看起來相當煩瑣。

2

AIRCR寄存器(地址0x0xE000ED0C)有一個SYSRESETREQ位(0x0004)。設置此位將重置處理器。

參見: 應用中斷和復位控制寄存器(SCB_AIRCR) PM0056 編程手冊 STM32F10xxx的/ 20xxx/21xxx/L1xxxx Cortex-M3的編程手冊