
在华大CIU32F032的资源中只有IWDT它是由独立的RC振荡器作为时钟因此在芯片进入Stop模式后IWDT依旧可以正常工作计数器溢出会产生复位如果此时恰好需要进入stop模式并且不能复位该怎么办下面列举我的操作方法1、利用创芯工坊的烧录器进行配置在选项字节配置设置“独立看门狗在STOP下计数器停止计数”。2、在程序中对Flash的option bytes进行设置要注意的是Flash的解锁操作如果不解锁直接改写会锁死Flashvoid configure_iwdg_stop_mode(void) { // 使用标准库提供的读取函数判断当前配置 if (std_flash_get_iwdg_stop() false) { // false 表示停止模式即 STOP 模式停止计数 // 已经配置为停止模式无需操作 return; } // 否则执行解锁、配置、锁定 // 注意解锁函数返回 void但我们可以检查锁定状态位来验证是否成功 std_flash_unlock(); if (std_flash_get_lock_status()) { // 解锁失败复位 NVIC_SystemReset(); } std_flash_opt_unlock(); if (std_flash_get_opt_lock_status()) { std_flash_lock(); NVIC_SystemReset(); } // 配置结构体 std_flash_option_config_t ob_config {0}; ob_config.config_select FLASH_OB_CONFIG_IWDG_STOP; // 0x08 ob_config.iwdg_stop FLASH_IWDG_STOP_MODE_STOP; // 0 std_status_t status std_flash_option_bytes_config(ob_config); if (status ! STD_OK) { // 错误处理 std_flash_opt_lock(); std_flash_lock(); NVIC_SystemReset(); } // 锁定 std_flash_opt_lock(); std_flash_lock(); }以上两种方式都可以使芯片的看门狗在STOP模式下停止计数但是我遇到一种很危险的情况在批量生产过程中烧录车间会忘记对烧录器进行配置所以在程序上也要配置最好是在程序上判断两种方式是否都有生效如果两种方式都没有生效就不要开启IWDT因为一旦开启就无法关闭