瑞萨e2studio(20)----独立看门狗IWDT

news/2025/3/21 6:13:01/

瑞萨e2studio.20--独立看门狗IWDT

  • 概述
  • 视频教学
  • csdn课程
  • 样品申请
  • 完整代码下载
  • 硬件准备
  • 新建工程
  • 工程模板
  • 保存工程路径
  • 芯片配置
  • 工程模板选择
  • 时钟配置
  • uart配置
  • uart属性配置
  • 设置e2studio堆栈
  • e2studio的重定向printf设置
  • printf输出重定向到串口
  • RTC配置
  • RTC属性配置
  • IWDT配置
  • IWDT属性配置
  • OFS0属性配置
  • R_IWDT_Open()函数原型
  • R_IWDT_Refresh()函数原型
  • R_IWDT_CounterGet()函数原型
  • IWDT周期设定
  • IWDT计数周期
  • 演示效果
  • 完整代码

概述

本文主要阐述了如何借助e2studio工具对瑞萨独立看门狗IWDT进行配置设置,同时设置RTC时钟产生每秒的周期性中断,并通过串口输出观察独立看门狗IWDT的计数情况。
最近在弄ST和瑞萨RA的课程,需要RA样片的可以加群申请:6_15061293 。

视频教学

https://www.bilibili.com/video/BV1TM4y1h7Xx/

瑞萨e2studio(20)----RTC时钟日历&闹钟&周期性中断

csdn课程

csdn课程更加详细。
https://edu.csdn.net/course/detail/36131

样品申请

https://www.wjx.top/vm/wBbmSFp.aspx#

完整代码下载

https://download.csdn.net/download/qq_24312945/87750302

硬件准备

首先需要准备一个开发板,这里我准备的是芯片型号R7FA4M2AD3CFP的开发板:
在这里插入图片描述

新建工程

在这里插入图片描述

工程模板

在这里插入图片描述

保存工程路径

在这里插入图片描述

芯片配置

本文中使用R7FA4M2AD3CFP来进行演示。
在这里插入图片描述

工程模板选择

在这里插入图片描述

时钟配置

开发板上的外部高速晶振为12M,需要修改XTAL为12M.
在这里插入图片描述

uart配置

点击Stacks->New Stack->Driver->Connectivity -> UART (r_sci_uart)。
在这里插入图片描述

uart属性配置

在这里插入图片描述

设置e2studio堆栈

在这里插入图片描述

e2studio的重定向printf设置

C++ 构建->设置->GNU ARM Cross C Linker->Miscellaneous去掉Other linker flags中的 “–specs=rdimon.specs”
在这里插入图片描述

printf输出重定向到串口

打印最常用的方法是printf,所以要解决的问题是将printf的输出重定向到串口,然后通过串口将数据发送出去。
注意一定要加上头文件#include <stdio.h>

#include <stdio.h>fsp_err_t err = FSP_SUCCESS;
volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{if(p_args->event == UART_EVENT_TX_COMPLETE){uart_send_complete_flag = true;}
}
#ifdef __GNUC__                                 //串口重定向#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);if(FSP_SUCCESS != err) __BKPT();while(uart_send_complete_flag == false){}uart_send_complete_flag = false;return ch;
}
int _write(int fd,char *pBuffer,int size)
{for(int i=0;i<size;i++){__io_putchar(*pBuffer++);}return size;
}

RTC配置

点击Stacks->New Stack->Driver->Timers -> Realtime Clock(r_rtc)。
在这里插入图片描述

RTC属性配置

在这里插入图片描述

IWDT配置

点击Stacks->New Stack->Monitoring -> Independent Watchdog(r_iwdt)。
在这里插入图片描述

IWDT属性配置

在这里插入图片描述

OFS0属性配置

在这里插入图片描述

在这里插入图片描述

R_IWDT_Open()函数原型

在这里插入图片描述
故可以用R_IWDT_Open()函数进行初始化和开启IWDT。

 /* Open the module. */err = R_IWDT_Open(&g_iwdt0_ctrl, &g_iwdt0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);

R_IWDT_Refresh()函数原型

在这里插入图片描述
故可以用R_IWDT_Refresh()函数进行喂狗操作。

 /* Refresh before the counter underflows to prevent reset or NMI. */(void) R_IWDT_Refresh(&g_iwdt0_ctrl);

R_IWDT_CounterGet()函数原型

在这里插入图片描述

故可以用R_IWDT_CounterGet()函数获取当前的计数值。

 uint32_t iwdt_counter = 0U;err = R_IWDT_CounterGet(&g_iwdt0_ctrl, &iwdt_counter);

IWDT周期设定

在这里插入图片描述
IWDTLOCO 是一个具有低功耗特性的独立看门狗定时器片上振荡器,可以在不消耗过多电力的情况下,提供稳定的时钟信号来驱动看门狗定时器。这种振荡器对于低功耗应用和可靠性要求较高的系统非常有用。
IWDT的时钟频率为15kHz,依据上文的设定,IWDT周期如下所示。

参数
IWDTLOCO15 kHz
分频(设置为32)15 kHz/32
超时周期2048 cycles
IWDT时钟频率15 kHz / 32 = 468.75 Hz
单周期时间1 / 468.75 Hz = 2.13 ms
溢出时间2.13 ms x 2048 cycles = 4.362 seconds
上述可以看到在该设置下的溢出时间为4.362s,那么1s的计数为1s/2.13ms=469。

IWDT计数周期

IWDT计数是从最高一直减到0,当到0时候触发复位。
在这里插入图片描述

演示效果

设置每过1s打印一次当前时间,分别设置喂狗和不喂狗,结果如下。
延迟1s的计数为1s/2.13ms=469,打印为1563,由于是向下计数,2048-1563=485,符合计算值。
在这里插入图片描述
当不执行喂狗时候,计数值到0时会进行复位。

在这里插入图片描述

完整代码

    /* Initialize the RTC module*/err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Set the RTC clock source. Can be skipped if "Set Source Clock in Open" property is enabled. */R_RTC_ClockSourceSet(&g_rtc0_ctrl);/* R_RTC_CalendarTimeSet must be called at least once to start the RTC */R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);/* Set the periodic interrupt rate to 1 second */R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);printf("starting up !\n");/* Open the module. */err = R_IWDT_Open(&g_iwdt0_ctrl, &g_iwdt0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Initialize other application code. *//* Do not call R_IWDT_Refresh() in auto start mode unless the* counter is in the acceptable refresh window. */(void) R_IWDT_Refresh(&g_iwdt0_ctrl);while(1){if(rtc_flag){uint32_t iwdt_counter = 0U;err = R_IWDT_CounterGet(&g_iwdt0_ctrl, &iwdt_counter);assert(FSP_SUCCESS == err);printf("iwdt_counter=%d\n",iwdt_counter);/* Refresh before the counter underflows to prevent reset or NMI. */(void) R_IWDT_Refresh(&g_iwdt0_ctrl);rtc_flag=0;}}

http://www.ppmy.cn/news/520905.html

相关文章

【E2E】E2E通信保护协议学习3 E2E Profile 1

文章目录 前言一、Profile 1的一些内容&#xff1f;二、E2E可以检测的故障或影响1.Header LayoutCounterData ID 总结 前言 在前两篇的帮助下&#xff0c;本篇主要介绍一下E2E Profile 1&#xff0c;会对其做一个简单的阐述。 一、Profile 1的一些内容&#xff1f; Profile 1…

e2fsprogs的编译

前言 e2fsprogs是一个开源库&#xff0c;可以读写ext2/ext3/ext4磁盘。 e2fsprogs提供了工具(可执行文件)&#xff0c;库(可以包含到自己的工程干活)。 想先学习下工程的编译&#xff0c;工程安装了什么应用程序&#xff0c;每个应用程序都是干啥的。 实验 开源工程的下载点…

e2fsprogs交叉编译

编译&#xff1a; ./configure --prefix"$(pwd)/../../out/system" --hostarm-linux CCarm-linux-gcc LDFLAGS"-static" --with-libintl-prefix"../../out/system" # 静态库 ./configure --prefix"$(pwd)/../../out/system" --host…

vsomeip之E2E

1、AUTOSAR_E2E E2E的概念是在运行时对与安全相关的数据交互进行保护&#xff0c;以防止通信链路故障的影响。基本实现方式是在要保护的数据区添加额外的E2E Header。发送端负责添加E2E Header&#xff0c;接收端会对Header进行校验检查&#xff0c;保证数据的完整性。 参考 A…

【系统架构】第四章-信息安全技术基础知识

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 信息安全基础知识 一、信息安全5要素&#xff1a;机密性、完整性、可用性、可控性、可审查性 二、信息安全范围包括&#xff1a;设备安全、数据安全、内容安全、行为安全 设备安全&#xff…

LangChain: LLM应用开发框架

GitHub - hwchase17/langchain: ⚡ Building applications with LLMs through composability ⚡⚡ Building applications with LLMs through composability ⚡ - GitHub - hwchase17/langchain: ⚡ Building applications with LLMs through composability ⚡https://github.c…

PHP项目迁移K8s之OSS存储卷

前言 最近一个老项目&#xff08;PHP&#xff09;需要迁移至阿里云K8s上&#xff0c;之前项目上各种资源都存在服务器上多个目录下&#xff0c;本文就针对其中资源迁移部署讲解。 一、选择OSS存储卷原因 出于多种原因选择挂载OSS存储卷&#xff1a; 项目后期开发功能设计上传…

工控安全(ICS)

参考&#xff1a;概述 语雀 (yuque.com) 工业控制系统(Industrial Control Systems,ICS,简称工控系统),是由各种自动化控制组件以及对实时数据进行采集、监测的过程控制组件共同构成的确保工业基础设施自动化运行、过程控制与监控的业务流程管控系统。其核心组件包括数据采集…