【沁恒蓝牙开发】关闭独立看门狗

之前的文章介绍过开启看门狗,链接:https://blog.csdn.net/weixin_45680838/article/details/155444550

如果再一些需要超低功耗的场景,需要节约每一点能量的时候,需要关闭看门狗就可以参考下文。

1、代码设计思路

依靠复位标志位,区分、控制是否初始化独立看门狗,如:

①上电,进入上电复位,初始化独立看门狗,等待复位

②进入看门狗超时复位,不初始化独立看门狗。等待确认不会复位,确认独立看门狗关闭。

③手动按下复位触发按键,进入外部复位脚复位,后初始化独立看门狗,随后立刻调用软件复位。

④进入软件复位,等待等待确认不会复位,确认独立看门狗关闭。

c 复制代码
/*-----------------看门狗初始化--------------------------*/
void IWDG_Init()
{
    PRINT("   -----  %s  \n",__FUNCTION__);

    LClk32K_Cfg(Clk32K_LSI,ENABLE);//使用外部晶振,如果没有外部晶振就需要注释

    R32_IWDG_KR=0x5555;
    R32_IWDG_CFG |= (7<<12);//32K分频512,时钟62.5Hz
    R32_IWDG_CFG &=0xFFFFF000;
    // R32_IWDG_CFG |=0xFFF;//看门狗时间约65s(0xFFF/(32K/512))
    R32_IWDG_CFG |= 0x100;//看门狗触发时间缩短
    R32_IWDG_KR=0xCCCC; 
}

/*-----------------看门狗初始化--------------------------*/
int main()
{
    HSECFG_Capacitance(HSECap_18p);
    SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
    PWR_DCDCCfg(ENABLE);
    GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
    GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);

    /* 配置串口调试 */
    // DebugInit();
    PRINT("   Start @ChipID=%02x\n", R8_CHIP_ID);
    DelayMs(200);

    uint8_t flag = R8_RESET_STATUS;
    printf("   RESET_STATUS %x\r\n",flag & 0x07);

    switch (R8_RESET_STATUS) {
        case RST_FLAG_SW:{
            PRINT("   ------ Software Reset\n");
        }
            break;
 
        case RST_FLAG_RPOR:{
            PRINT("   ------ Power On Reset\n");
            IWDG_Init();

        }
            break;

        case RST_FLAG_WTR:{
            PRINT("   ------ Watch Dog tiemout Reset\n");
        }
            break;

        case RST_FLAG_MR:{
            PRINT("   ------ External Reset Pin Reset\n");
            IWDG_Init();
            SYS_ResetExecute();

        }
            break;
       
        default:
            break;
    }
    PRINT("     \n\r");


    while(1)
        ;
}

2、实验

按照代码设计思路测试操作开发板就可以 测试出一下的LOG,验证关闭看门狗。

相关推荐
M78佐菲8 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
wWYy.9 小时前
C++与C的区别
c语言·c++
LuminousCPP10 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
程序员与背包客_CoderZ13 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
william_yangshun14 小时前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
深圳市宝华视联14 小时前
Python 读取 IP 视频流简单 Demo
python·嵌入式硬件·opencv·网络协议·tcp/ip·实时音视频·嵌入式实时数据库
恒锐丰科技韩生15 小时前
RB6005A|晶准 单节锂电池内置 MOS 保护芯片 DFN2×3‑8
嵌入式硬件·硬件工程
youshi666815 小时前
stm32-PWR、低功耗模式
stm32·单片机·嵌入式硬件
ACP广源盛1392462567315 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频
Funing715 小时前
STM32 电机动态 PI 控制:从编码器反馈、增量式 PI 到 Matlab 参数拟合与 PWM 输出
stm32·嵌入式硬件·matlab·pi控制算法