我在使用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被置零了所以才會出現這種情況,具體為什么這個芯片會這樣,我還沒有找到原因,如果有網友知道請告知,感激不盡!