看门狗芯片--SP706SEN--调试记录

一、前因后果

工程中,设备为了稳定可靠,会增加外部看门狗,但是外部看门狗一旦启动,就停不下来,必须在固定的时间范围内进行喂狗,不然看门狗芯片就会产生一个复位信号复位MCU。以前大家都认为看门狗一旦工作,就不能进行控制,也不便于程序调试,所以在硬件上,会使用单片机来控制看门狗芯片的电源,原理图如下:

最近在工程中由于MCU的复位信号一直是低电平,导致程序下不下去,最后查原因,发现是看门狗电路这一块造成的,然后就仔细看SP706SEN的手册,发现WDI引脚这样描述:如果WDI引脚处于浮空或高阻状态,则禁止看门狗功能;

二、程序处理

在程序中,初始化引脚时,把WDI初始化为浮空输入,当需要开启看门狗的时候,把WDI引脚设置为推挽输出,开启后,在定时器函数里翻转该引脚状态,以达到喂狗的目的,程序如下:

 1   /*Configure GPIO pin : PtPin */
 2   GPIO_InitStruct.Pin = WATCHDOG_FLAG_Pin;
 3   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;    
 4   GPIO_InitStruct.Pull = GPIO_NOPULL;
 5   HAL_GPIO_Init(WATCHDOG_FLAG_GPIO_Port, &GPIO_InitStruct);
 6
 7 }
 8
 9 /* USER CODE BEGIN 2 */
10 // 开启看门狗函数
11 void watchDogEN(void)
12 {
13   GPIO_InitTypeDef GPIO_InitStruct;
14   GPIO_InitStruct.Pin = WATCHDOG_FLAG_Pin;
15   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
16   GPIO_InitStruct.Pull = GPIO_NOPULL;
17   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
18   HAL_GPIO_Init(WATCHDOG_FLAG_GPIO_Port, &GPIO_InitStruct);
19 }
 1 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 2 {
 3     if(htim == (&htim3))    // 定时1s
 4     {
 5         HAL_GPIO_TogglePin(WATCHDOG_FLAG_GPIO_Port, WATCHDOG_FLAG_Pin);    // 喂狗
 6         HAL_GPIO_TogglePin(RUN_GPIO_Port, RUN_Pin);
 7     }
 8     else if (htim == (&htim4))
 9     {
10         SensRxFlag = 1;
11     }
12 }

原文地址:https://www.cnblogs.com/icefree/p/9942844.html

时间: 2024-11-17 09:36:03

看门狗芯片--SP706SEN--调试记录的相关文章

看门狗 (监控芯片)

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统的陷入停滞状态,发生不可预料的后果. 看门狗,又叫 watchdog,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般是连接到单片机. 看门狗的功能是定期的查看芯片内部的情

CC2541蓝牙学习——看门狗

看门狗是在软件跑飞的情况下CPU自恢复的一个方式,看门狗分为硬狗和软狗,硬狗就是由专门的看门狗硬件电路实现看门狗功能,看门狗芯片也比较多,比如DS1232,除了看门狗功能外还有电源电压监测功能.软狗就是由软件实现的看门狗功能,现在很多CPU都自带了软狗,很难说硬狗好还是软狗好,如果软狗够用,尽量使用软狗简化设计,看门狗说白了就是一个定时器!,当软件在选定的时间间隔内不能置位看门狗定时器(WDT),WDT就复位系统.看门狗可用于电噪声,电源故障或静电放电等恶劣工作环境或高可靠性要求的环境.如果系统

5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

树莓派启用看门狗watchdog

树莓派内核默认没有启用看门狗功能,当内核挂死时将进入"死机"状态或kgdb调试状态,并不会自动重启系统.本文为树莓派开启看门狗功能并通过内核线程周期性喂狗,当出现系统崩溃时会自动重启Linux系统. 环境说明:(1)单板:树莓派b (2)Linux内核:Linux-4.1.15 (3)Bootloader:u-boot-2015.10 源码文件:linux-rpi-4.1.y/drivers/watchdog/bcm2835_wdt.c 1.看门狗驱动源码分析 树莓派的看门狗驱动程序为

linux之软看门狗的实现

//softwareWdt.h /* *功能: 监测各线程间的运行状态(软看门狗) * *作者:JDSH * *时间:2015-01-15 22:20 */ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include "Typedef.h" #define REQUEST_WDT_MAX_NUM 20 class CSoft

[看门狗]内部看门狗和外部看门狗

1. 芯片内部看门狗 内部看门狗通常为芯片内部某个特殊定时器,用户可以通过手动初始化.设置timeout.使能.失能该看门狗,然后在线程中定时去喂狗,从而达到检测应用程序跑飞.跑死的情况. 在Linux系统中,可以在uboot中打开看么狗,把喂狗时间设置长度超过kernel启动时间,从而当kernel正常启动后,喂狗任务由uboot交给了应用程序,这样达到了监控kernel启动bootsup和应用程序的双重功效. 2. 芯片外部看门狗 外部看门狗具有独立性,可以更加安全的确保芯片的正常运行. 外

[ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG

引言:硬件中的看门狗,不是门卫的意思,而是一只很凶的狗!如果你不按时喂它,它就会让系统重启!这反而是我们想要的功能~ 1.看门狗概述 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数.如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数.如果看门狗减到0就认为程序没有正常工作,强制整个系统复位.因此可以用看门狗防止程序在跑飞的时候回不到正常模式. 看门狗可用于受到电气噪音.

u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗

u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文档: Arm9内核手册:http://download.csdn.net/detail/wrjvszq/8358867 Arm11内核手册:http://download.csdn.net/detail/wrjvszq/8358877 Arm a8内核手册:http://download.csdn.

一个软件实现的Linux看门狗—soft_wdt

soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: https://github.com/sunmingbao/soft-wdt/archive/master.zip 本软件和/drivers/watchdog/softdog.c实现的软件看门狗差点儿一样. 基本的不同点是,前者支持一个看门狗.本软件则支持大量的看门狗. soft_wdt代码编译后.生成一个内核模块soft_wdt.ko. 模块载入后,将创建一个设备文件/dev/sof