某些STM32芯片在開啟看門狗后仿真到斷點處看門狗不會停止計數導致程序復位的問題


  我在使用STM32F767和STM32F407VG的時候,程序跑到斷點處一會兒程序就復位了,關閉看門狗不出現這種問題。

  解決方法(在初始化看門狗之前添加下面代碼):

  

#define    DBGMCU_APB1_FZ_REG    (*(__IO uint32_t*)0xE0042008)
#define    IWDG_HALT_DISABLE()    (DBGMCU_APB1_FZ_REG |= (1<<12))

void  main()
{
.....
IWDG_HALT_DISABLE();
IWDG_Init(IWDG_PRESCALER_64,1000); 
.....
}

  

  問題原因:我通過參考手冊,確認問題出在了DBGMCU寄存器的DBG_IWDG_STOP位,這個位的作用是調試模式時內核停止(斷點)看門狗計數是否停止,內容如下。

 

 

 

   我在KEIL中查看該寄存器狀態發現這個位置零了,而在STM32F407VE的仿真中該位是置高的(正常情況),因為STM32F407VG被置零了所以才會出現這種情況,具體為什么這個芯片會這樣,我還沒有找到原因,如果有網友知道請告知,感激不盡!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM