GD32 看门狗

这篇具有很好参考价值的文章主要介绍了GD32 看门狗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 看门狗的概念

GD32 看门狗,GD32F10X,单片机

2. 独立看门狗

 GD32 看门狗,GD32F10X,单片机

独立看门狗的原理:设定一个重载值。赋值计数器。每来一个脉冲计数值减减。如果计数值减到0。还没有去喂狗就会产生复位。所以在计数值在0~重载值范围必须要喂一次狗。 

在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。

无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。

如果程序异常,就无法正常喂狗,从而系统复位。

3. 窗口看门狗

窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

之所以称为窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚。

窗口看门狗是在一个窗口内去喂狗。提前喂狗是无效的。

GD32 看门狗,GD32F10X,单片机

1. WWDG特征

可编程的自由运行递减计数器

复位条件

- 当递减计数器值小于 0x40 时复位(如果看门狗已激活)  注:0x40根据芯片会有所不同

- 在窗口之外重载递减计数器时复位(如果看门狗已激活)

提前唤醒中断 (EWI) :当递减计数器等于 0x40 时触发(如果已使能且看门狗已激活)

2. WWDG功能

 

T[6:0] 就是 WWDG_CR 的低七位, W[6:0] 即是 WWDG->CFR 的低七位。 T[6:0]就是窗口看门狗的计数器,而 W[6:0](由用户定义) 则是窗口看门狗的上窗口,下窗口值是固定的( 0X40 )。 当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都会产生复位。

GD32 看门狗,GD32F10X,单片机 

STM32F的窗口看门狗中有一个7位的递减计数器T[6:0],它会在出现下述2种情况之一时产生看门狗复位:

当喂狗的时候如果计数器的值大于某一设定数值W[6:0]时,此设定数值在WWDG_CFR寄存器定义。

当计数器的数值从0x40减到0x3F时【T6位跳变到0】

如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以用于喂狗以避免WWDG复位。

GD32 看门狗,GD32F10X,单片机

4. 独立看门狗与窗口看门狗的比较 

 

5. 独立看门狗寄存器介绍

1. 控制寄存器(FWDGT_CTL)

GD32 看门狗,GD32F10X,单片机

 

2. 预分频寄存器(FWDGT_PSC)  

设置时钟分频

3. 重装载寄存器(FWDGT_RLD)

只用了2的12次方这个寄存器的值不能大于2的12次方

GD32 看门狗,GD32F10X,单片机

4. 状态寄存器(FWDGT_STAT) 

GD32 看门狗,GD32F10X,单片机

6. 代码实现 

GD32 看门狗,GD32F10X,单片机

WDG.h

#ifndef _WDG_H
#define _WDG_H

#include "gd32f10x.h"

void fwdg_init(void);      //初始化独立看门狗
void fwdg_reload(void);    //独立看门狗的喂狗函数

#endif

 WDG.c

#include "WDG.h"

//初始化独立看门狗
void fwdg_init(void){
	//开启时钟源(IRC40K),并等待其稳定以供看门狗使用
	rcu_osci_on(RCU_IRC40K); //开启IRC40k 默认就是 IRC40k的时钟
	while(SUCCESS != rcu_osci_stab_wait(RCU_IRC40K)); //等待IRC40k稳定下来
	
	fwdgt_write_enable();
  /* 参数1:重载值 参数2:预分频值 */
  /* (40K/64)*1000 = 1.625s 如果在1.625内没有喂狗就会复位 */
  /* 喂狗后就会把重载值重新给计数值又会获得1.625s  */
	fwdgt_config(1000, FWDGT_PSC_DIV64);
	fwdgt_write_disable();
	fwdgt_enable(); //使能看门狗
}

//独立看门狗的喂狗函数
void fwdg_reload(void){
	fwdgt_write_enable();
	fwdgt_counter_reload(); /* 喂狗 */
}

main.c文章来源地址https://www.toymoban.com/news/detail-729799.html

#include "gd32f10x_eval.h"
#include <stdio.h>
#include "WDG.h"

int main(){
	gd_eval_com_init(EVAL_COM0);
	printf("This is a FWDGT DEMO test.\r\n");
	
	// 对独立看门狗进行初始化
	fwdg_init();

	while(1){
		fwdg_reload(); /* 喂狗 */
	}
}

到了这里,关于GD32 看门狗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机移植freemodbus主机(STM32、GD32、瑞萨、国民技术等)

    从github下载:https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32 无法下载或者下载太慢可以用资源下载,无需积分。freeModbus主机源码下载 示例代码 参考从机代码创建 将FreeModbus主机源代码拷贝到工程中间件-第三方库-freemodbus源码库:即MiddlewaresThird_PartyFreeModbusMaster文件夹中。

    2024年02月11日
    浏览(42)
  • GD32 单片机 硬件I2C死锁解决方法

    在I2C恢复函数下个断点(检测到I2C多次超时之后,应该能跳转到I2C恢复函数) 使用镊子,将SCL与SDA短接,很快就能看到程序停到恢复函数的断点上,此时再执行恢复函数,看能否正常走出(可在回复函数中写个死循环,只有I2C正常才跳出,检测I2C正常的办法,可以读从设备的

    2024年02月05日
    浏览(61)
  • 如果STM32/GD32一类的ARM单片机解除读写保护的方法

    有时候啊,使用ST-Link给STM32一类的ARM单片机下载程序的时候,发现怎么也下载不了,可能是由于芯片被写保护了。那怎么办呢?可以使用STM32 ST-LINK Utility工具解除芯片的写保护,本篇博文介绍操作步骤,文章最后有工具下载链接。 双击“STM32 ST-LINK Utility.exe”,打开软件。 软

    2024年02月09日
    浏览(49)
  • 单片机(STM32,GD32,NXP等)中BootLoader的严谨实现详解

    Bootloader( 引导加载程序 )的主要任务是引导加载并运行应用程序,我们的软件升级逻辑也一般在BootLoader中实现。本文将详细介绍BootLoader在单片机中的实现,包括 STM32、GD32、NXP Kinetis 等等的所有单片机,因为无论是什么样的芯片,它实现的逻辑都是一样的。 注意,本篇文章主

    2024年02月02日
    浏览(56)
  • 【GD32】从0开始学GD32单片机(9)—— SPI外设详解+主机从机发送和接收例程

    SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种 高速的,全双工,同步的 通信总线。 SPI总共需要4根线来实现通信, NSS:片选线,用于选择需要通信的从机;CLK:同步时钟线,用于提供同步时钟信号;MISO:主机读从机写线;MOSI:主机写从机读线 。 GD32F103系列的

    2023年04月08日
    浏览(42)
  • GD32单片机远程升级下载,手机在线升级下载程序,GD32在线固件下载升级,手机下载程序固件方法

            GD32、STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。         GD32/STM32单片机的在线下载通常需要以下几种方式完成:       1、使用ST/GD提供的串口下载工具,本地完成固件的升级下载。        2、自行完成系统

    2024年02月02日
    浏览(56)
  • STM32 GD32 瑞萨 psoc 等单片机 无线wifi蓝牙最佳解决方案

    新联鑫威一系列低功耗高性价比sdio wifi/蓝牙combo的模块CYWL6208 , CYWL6312, CYW6209等可以搭配stm32 各种型号例如以下,支持sta/ap/ap+sta,双模蓝牙的应用,支持ThreadX,rt-thread, freertos, Azure RTOS, Linux, Android系统. 稳定强,功耗低,吞吐量高等优势可以应用在新能源充电桩 安防 工控 智能

    2024年01月17日
    浏览(52)
  • 【GD32】从0开始学GD32单片机(8)—— I2C外设详解+主机从机发送和接收例程

    I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有

    2024年02月02日
    浏览(83)
  • 【GD32】从零开始学GD32单片机高级篇——外部存储器控制器EXMC详解+SDRAM读写例程

    外部存储器控制器EXMC,用来访问各种片外存储器,通过配置寄存器,EXMC可以把AMBA 协议转换为专用的片外存储器通信协议,包括 SRAM,ROM,NOR Flash,NAND Flash,PC Card和SDRAM 。 EXMC的工作原理其实就是把外部储存器的地址映射到内部的特定地址上,用户想访问外部的存储器,我们

    2024年02月10日
    浏览(94)
  • J-Flash J-Link解锁GD32单片机

    提示:本篇所使用的工具为J-Link V9,软件为J-Flash V6.48b 当给GD32单片机Flash上锁,即配置安全保护后,单片机无法再通过keil、J-Link工具J-Flash烧录程序, 可通过J-Link STM32 Unlock或者J-Flash两种方法都可以。 我们先来用J-Link命令行验证下是否是真的开启了安全保护的 打开J-Link Comm

    2024年02月21日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包