首页 > 其他分享 >N32G031 IWDG使用

N32G031 IWDG使用

时间:2024-06-22 21:57:26浏览次数:10  
标签:IWDG feedTheDog void Init 喂狗 使用 N32G031

目录

IWDG功能简介

N32G031 IWDG使用步骤

示例代码(简化版)


N32G031是一款基于ARM Cortex-M0内核的32位微控制器,由南京沁恒微电子股份有限公司设计。该系列微控制器广泛应用于工业控制、消费电子、物联网等领域。IWDG(Independent Watchdog)即独立看门狗,是一个重要的系统可靠性组件,用于检测和恢复系统异常,防止系统死机。

IWDG功能简介

独立看门狗的主要作用是在系统运行过程中,如果软件因为某种原因陷入死循环或停止响应,IWDG可以在预设的时间后复位系统,使系统重新开始运行,从而提高系统的稳定性。

N32G031 IWDG使用步骤

  1. 初始化IWDG: 在使用IWDG之前,需要对其进行初始化配置,包括设置时钟源、预分频值和喂狗时间等。

C

1void IWDG_Init(void)
2{
3    // 使能IWDG写入访问权限
4    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
5    
6    // 配置IWDG时钟源(默认为LSI,低速内部振荡器)
7    // 注意:根据实际需求选择时钟源,此处假设使用LSI
8    
9    // 设置预分频值,决定喂狗周期
10    IWDG_SetPrescaler(IWDG_Prescaler_256);
11    
12    // 重置并启动IWDG计数器
13    IWDG_ReloadCounter();
14}
  1. 喂狗操作: 在程序中定期执行喂狗操作,以避免IWDG触发系统复位。喂狗操作就是向IWDG寄存器写入一个特定的值。

C

1void feedTheDog(void)
2{
3    // 执行喂狗操作,重载计数器
4    IWDG_ReloadCounter();
5}
  1. 在主循环或定时中断中调用feedTheDog()函数,确保在预设时间内至少执行一次喂狗操作。

示例代码(简化版)

以下是一个简化的示例,展示了如何在N32G031上配置和使用IWDG。


C

1#include "N32G031xx.h"
2
3void SystemClock_Config(void);
4void IWDG_Init(void);
5void feedTheDog(void);
6
7int main(void)
8{
9    // 系统时钟配置
10    SystemClock_Config();
11
12    // 初始化IWDG
13    IWDG_Init();
14
15    while (1)
16    {
17        // 假设的其他任务处理...
18        
19        // 定期喂狗,这里为了演示简单直接在主循环中进行
20        feedTheDog();
21    }
22}
23
24void IWDG_Init(void)
25{
26    // 具体初始化代码,如上所述
27}
28
29void feedTheDog(void)
30{
31    // 具体喂狗操作,如上所述
32}

标签:IWDG,feedTheDog,void,Init,喂狗,使用,N32G031
From: https://blog.csdn.net/luoqjcandy/article/details/139888731

相关文章

  • 分享记录在使用ubuntu部署项目(api接口项目)的步骤+自己踩过的坑(亲身经历,坑挺多的)
    安装虚拟机VMwareWorkstationPlayer/Pro优点:高性能:VMware的虚拟机通常具有更好的性能和稳定性。丰富的功能:特别是Pro版本,支持快照、多级别快照、克隆虚拟机等高级功能。商业支持:有商业支持选项,适合企业用户。缺点:费用:WorkstationPlayer是免费的,但功能有限。Workst......
  • 使用 Python 进行测试(7)...until you make it
    总结我很懒,我想用最少的行动实现目标,例如生成测试数据。我们可以:使用随机种子保证数据的一致性。>>>random.seed(769876987698698)>>>[random.randint(0,10)for_inrange(10)][10,9,1,9,10,6,5,10,1,9]>>>random.seed(769876987698698)>>>[random.r......
  • 在IntelliJ IDEA中使用Spring Boot:快速配置
    使用IntelliJIDEA开发SpringBoot应用程序可以极大地提高开发效率,因为IDEA提供了许多便捷的功能,比如自动补全、代码分析、热部署等。以下是一篇可能的CSDN博客文章草稿,介绍如何在IntelliJIDEA中使用SpringBoot:在IntelliJIDEA中使用SpringBoot:开发指南引言IntelliJ......
  • 在windows下使用cmd命令行对java文件进行编译和执行
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进......
  • 【学习笔记】使用第三方工具(secureCRT软件)通过console口本地访问访问交换机的详细操作
    一、前期准备1.终端设备(个人电脑)已正确安装,并能成功运行secureCRT软件(本次实验软件为:secureCRT)2.通过console口本地访问则需要准备一根console线(本次实验软console线为:USB转RJ45console调试线)二、操作步骤1、简明步骤说明:简明步骤需要一定基础1.1console线的USB端......
  • YOLOv5快速入门和使用
    YOLOv5快速入门使用官方文档地址:https://docs.ultralytics.com/zh/yolov5/如果文章看不懂,过一遍自己整理过程,然后去参考视频中看对应的视频:环境准备-->代码拉取-->打标-->训练模型-->运行 一、配置虚拟环境(不止是YOLO如果使用其余的需要隔离环境也可以这样操作)为了防止影......
  • 使用三种方式通过数组实现拷贝复制
    三种通过数组的方式进行数组的拷贝,其本质都是通过地址传参,来实现数组的拷贝。1、通过数组访问这种访问数组的方式是最常见的voidcopy1(doubletarget[],doublesource[],intlen){for(inti=0;i<len;++i){target[i]=source[i];}}i......
  • golang如何使用指针灵活操作内存?unsafe包原理解析
    Hi你好,我是k哥。一个大厂工作6年,还在继续搬砖的后端程序员。我们都知道,C/C++提供了强大的万能指针void*,任何类型的指针都可以和万能指针相互转换。并且指针还可以进行加减等算数操作。那么在Golang中,是否有类似的功能呢?答案是有的,这就是我们今天要探讨的unsafe包。本文将深入探......
  • PHP环境搭建之使用PhpStudy
    目录1PhpStudy1.1简介1.2下载&安装1.3修改配置1.3.1Apache配置1.3.2MySQL配置1.3.3MySQL启动问题1.4Composer1.4.1简介1.4.2下载安装1.4.3修改配置1.4.4使用命令1PhpStudy1.1简介phpstudy是一个php运行环境的集成包,用户不需要去配置运行环境,就可以使用,phpstudy不......
  • C#使用MJpeg实现视频流发送与显示
    1、发送视频流:usingSystem;usingSystem.Collections.Concurrent;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Globalization;usingSystem.IO;usingSystem.Linq;usingSystem.Net.Sockets;usingSystem.Text;usingSystem.Threading.Tasks......