STM32 SP706S 外部看门狗的应用示例
看门狗是防止程序跑飞的一种兜底方案,STM32有自己片内的独立看门狗和串口看门狗,但是很意外的发现我测试片内的看门狗不好用,关闭了一扇门的同时,我又发现了一扇窗,板子上有SP706S外部看门狗芯片,那么STM32 SP706S的测试就应运而生。
STM32和SP706S的电路部分说明示意图
关于SP706S的文档描述
对于SP706S来说,WDI是输入,那么对于STM32来说,对应连接的STM32引脚PA0就是输出(推挽输出)。
图中红框描述的意思是如果WDI这个引脚持续高电平或持续低电平到1.6秒的时间,内部看门狗定时器就会WDO(上划线)持续低电平。从上面的示意图可以看出WDO(上划线)和MR(上划线)连接在一起;RESET(上划线)又和STM32的NRST连接在一起,也就是说 RESET(上划线)决定了STM32的复位效果。
总结一下,从STM32这个角度出发,如果初始化了PA0为推挽输出,即使能了外部看门狗,PA0需要再1.6s内变化一次高低电平实现喂狗,否则STM32程序就会被复位。
按照上述思路,编写测试工程代码来进行验证。
根据板子现有的资源2个LED灯,一个拨码开关。要实现测试效果的描述:
程序开始,初始化LED和拨码开关的GPIO,延时2秒钟,这时候LED灯有2秒是灭的状态。再使能看门狗,即设置PA0的GPIO为推挽输出。程序进入循环,循环中判断拨码开关的状态,如果是1就喂狗,否则就不喂狗。紧接着LED1和LED2亮灭,延时了400毫秒。
测试过程,程序编译下载,最初拨码开关是0的状态,即不喂狗,程序执行的现象是LED有2秒灭,然后亮灭闪烁4次左右,就又灭了2秒,再次执行这个过程。即SP706S外部看门狗起作用了,STM32程序重启了。再将拨码开关调为1的状态,程序不断亮灭,没有2秒左右的灭的现象,说明程序喂狗成功。
测试的主函数代码
#ifndef __STM32F10X_H
#define __STM32F10X_H
#include "stm32f10x.h"
#endif#ifndef __Z_UTIL_TIME_H
#define __Z_UTIL_TIME_H
#include "z_util_time.h"
#endif#ifndef __Z_HARDWARE_LED_H
#define __Z_HARDWARE_LED_H
#include "z_hardware_led.h"
#endif#ifndef __Z_HARDWARE_SWITCHKEYS_H
#define __Z_HARDWARE_SWITCHKEYS_H
#include "z_hardware_switchkeys.h"
#endif#ifndef __Z_HARDWARE_SP706S_H
#define __Z_HARDWARE_SP706S_H
#include "z_hardware_sp706s.h"
#endifvoid func_led_onoff_cross(void);int main()
{ init_led();init_switchkeys();delay_ms(2000);func_init_sp706s();for(;;){if(func_get_switchkey1() == 1){func_feed_dog();}func_led_onoff_cross();}}void func_led_onoff_cross()
{func_led1_on();func_led2_off();delay_ms(200);func_led2_on();func_led1_off();delay_ms(200);
}
z_hardware_sp706s.c
#ifndef __Z_HARDWARE_SP706S_H
#define __Z_HARDWARE_SP706S_H
#include "z_hardware_sp706s.h"
#endifvoid func_init_sp706s(void)
{GPIO_InitTypeDef GPIO_InitStructure_A;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);GPIO_InitStructure_A.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure_A.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure_A.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure_A);
}void func_feed_dog(void)
{if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0) == 0){GPIO_SetBits(GPIOA, GPIO_Pin_0);}else{GPIO_ResetBits(GPIOA, GPIO_Pin_0);}
}
z_hardware_sp706s.h
#ifndef __STM32F10X_H
#define __STM32F10X_H
#include "stm32f10x.h"
#endifvoid func_init_sp706s(void);
void func_feed_dog(void);
以上。
STM32 SP706S 外部看门狗的应用示例相关推荐
- STM32之独立看门狗与窗口看门狗总结
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
- STM32之独立看门狗原理
STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即主时钟发生故障,它也仍然有效,这里我们需要注意独立看门狗的时钟不是准确的40Khz,二是在30~60Khz之间变化的一个时钟,只是我们估算以 ...
- [STM32 ]内部独立看门狗IWDG
看门狗大家应该都不陌生,STM32内部带有独立看门狗和窗口看门狗两种:其中独立看门狗依赖于内部的晶振LSI进行工作,窗口看门狗依赖于系统时钟工作: 看门狗的作用,防止程序跑飞无法实现自复位而存在:如果 ...
- linux 内核定时器(低精度) — 外部看门狗程序
文章目录 1 内核定时器介绍 2 定时器数据结构及函数 3 外部看门狗驱动使用定时器函数 1 内核定时器 Linux 内核中有大量的函数需要时间管理,比如周期性的调度程序.延时程序等.硬件定时器 提供 ...
- stm32学习笔记---看门狗
一.独立看门狗IWDG剖析 1.看门狗概述 看门狗定时器 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗 ...
- STM32 HAL库 看门狗
STM32之CubeL4独立看门狗 文章目录 STM32之CubeL4独立看门狗 一 看门狗简介 二 STM32内部看门狗 两个狗的区别 1. 独立看门狗(IWDG) 2.窗口看门狗(WWDG) 三. ...
- 辉为科技 ARM主板如何设计外部看门狗电路
Atmel ARM9 系列 CPU 包括at91sam9260. at91sam9261. at91sam9263 等芯片都设计了内部看门狗,但由于该看门狗配置寄存器在上电后只能配置一次,而且系统启动 ...
- STM32学习(9)-看门狗,独立看门狗(相关的寄存器和函数),窗口看门狗(相关的寄存器和函数)
1. 看门狗(watchdog)的作用: 实时检测单片机的程序运行状态,防止程序跑飞造成无法预料的结果. 2. STM32包含哪几个看门狗(独立看门狗和窗口看门狗) 3.独立看门狗 3.1 独立看门狗 ...
- 【STM32】独立看门狗程序
00. 目录 文章目录 00. 目录 01. 独立看门狗简介 02. 程序功能示例 03. 硬件设计 04. 编程步骤 05. 程序示例 06. 附录 07. 声明 01. 独立看门狗简介 STM32 ...
最新文章
- (转)@ContextConfiguration注解说明
- RMAN简明教程之五——RMAN还原和恢复
- 【Android】不使用WebView来执行Javascript脚本(Rhino)
- C++学生信息管理系统V1(课后作业)
- Redis的List操作
- Java在开发中应注意的问题_Java设计编程应该注意的几个问题
- 【渝粤题库】国家开放大学2021春3700汽车电工电子基础题目
- osm数据下载 python_用Python解锁处理OSM数据的全部姿势
- compareTo的实现策略
- tushare数据分析(1)
- springboot GeoLite2-City.mmdb实现通过IP地址获取经纬度以及该IP的所属地区
- 计算机主机的税收,税控电脑
- 解决mysqld: [ERROR] Found option without preceding group
- 关于ONION/Wncry勒索病毒
- 通过nodejs 服务器读取HTML文件渲染到页面
- python画成绩正态分布图_正态分布为何如此重要?
- android国际化语言编码对照表
- 用于软件测试的最佳免费自动化工具
- 10053 事件详解
- DataWhale 组队学习爬虫 Task2
热门文章
- 【转】看完这篇,请不要再说不懂MOSFET
- 生成EXCEL(不使用模板)
- PE文件结构图解,比较牵强,仅为学习笔记,高手见笑
- 威眼局域网监控软件3.7.2发布
- 对英雄联盟比赛预测(二)- 数据获取api分析
- x86汇编_JE、JNE、JCXZ 和 JECXZ 指令_笔记_34
- 史上最强人工智能ChatGPT 到底有多强?
- 20172303 20172322 2017-2018-2 暑假作业 结对编程项目-舒尔特方格(增补:计时器的加入与页面优化)...
- 设计数据库中常见的规范
- 两轮电动车新物种来了,哈啰电动车智能新品ME70正式发布