0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA系列FSP库开发实战指南之IWDT实验

瑞萨嵌入式小百科 来源:野火电子 2026-05-26 16:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

31.3

IWDT实验

31.3.1

硬件设计

WDT一个

按键一个

LED两个

IWDG属于单片机内部资源,不需要外部电路,需要一个外部的按键和LED,通过按键来喂狗,喂狗成功LED亮,喂狗失败,程序重启,LED灭一次。我们使用LED灯和按键。

31.3.2

软件设计

31.3.2.1

新建工程

由于本实验需要按键和LED灯,因此我们可以在上一章节的实验例程基础上继续修改程序。

对于e2studio开发环境:拷贝一份我们之前的e2s工程“30_WDT”,然后将工程文件夹重命名为“30_IWDT”,最后再将它导入到我们的e2studio工作空间中。

对于Keil开发环境:拷贝一份我们之前的Keil工程“30_WDT”,然后将工程文件夹重命名为“30_IWDT”,并进入该文件夹里面双击Keil工程文件,打开该工程。

工程新建好之后,删除工程中“bsp_wdt.c”和“bsp_wdt.h”文件。的在工程根目录的“src”文件夹下面新建iwdt文件夹,再进入“iwdt”文件夹里面新建源文件和头文件:“bsp_iwdt.c”和“bsp_iwdt.h”。工程文件结构如下。

列表1:文件结构

左右滑动查看完整内容

30_IWDT
├─ ......
└─src
├─ led
│ ├─ bsp_led.c
│ └─ bsp_led.h
├─ iwdt
│ ├─ bsp_iwdt.c
│ └─ bsp_iwdt.h
└─ hal_entry.c

31.3.2.2

FSP配置

首先打开“31_IWDT”项目的FSP配置界面,接下来我们要在这个界面里配置芯片的引脚及其相应的功能。

双击configuration.xml打开配置界面:然后点开依次点击Stacks->New Stack->Search⋯里输入IWDT选着Independent Watchdog。

16657980-57ef-11f1-90a1-92fbcf53809c.png

并且在堆栈中配置独立看门狗的名称以及NMI回调函数。

然后我们点击BSP的属性settings界面,找到OFS0 register settings->WDT去设置WDT的属性。

16d20a5a-57ef-11f1-90a1-92fbcf53809c.png

要注意,对于寄存器启动的看门狗实验我们只能在新建的堆栈选项中进行配置,而对于自启动看门狗实验只能在BSP的堆栈中进行配置,在模块堆栈中进行配置是没有用的。在本实验中为了防止看门狗超时时间过长,影响实验效率,故把看门狗的周期设定为16周期,最大超时时间也就是2.1秒左右。

配置完成之后可以按下快捷键“Ctrl+S”保存,最后点右上角的“Generate Project Content”按钮,让软件自动生成配置代码即可。

31.3.2.3

NMI和复位

NMI就是会执行一个中断服务函数,这个中断函数是不能够被打断的,拥有最高的中断优先级。

一般是用在一些重要的数据上面,如果直接复位,这些数据将不被保存,这个时候我们可以写一个服务程序去保存重要数据,这也是看门狗最重要的功能。可以在NMI中断程序中通过软件复位或跳转到程序开头进行程序的重新运行。

复位就是在不断电的情况下,把当前MCU及运行数据清零后的启动。在本实验中使用NMI,也就是不可屏蔽中断来进行试验。

31.3.2.4

WDT初始化函数

列表2:初始化函数

左右滑动查看完整内容

/* 初始化看门狗并启动计数器*/
voidIWDT_Init(void)
{
//如果使用J-Link 调试器进行调试的话需要加上这一句话
R_DEBUG->DBGSTOPCR_b.DBGSTOP_WDT=0;
//初始化看门狗(WDT)模块
R_IWDT_Open(&g_iwdt0_ctrl, &g_iwdt0_cfg);
}

31.3.2.5

喂狗函数

列表3:喂狗函数

左右滑动查看完整内容

/* 喂狗*/
voidIWDT_Feed(void)
{
/* 喂狗,刷新递减计数器的值*/
R_IWDT_Refresh(&g_iwdt0_ctrl);
}

31.3.2.6

NMI中断服务函数

列表4:NMI不可屏蔽中断函数

左右滑动查看完整内容

/* 当看门狗NMI 发生时中断回调*/
voidiwdt_callback(wdt_callback_args_t * p_args)
{
/* 防止编译器产生关于函数中没有使用形参的警告*/
(void) p_args;
/* 蓝色LED 亮,请注意,在这里LED 灯函数为代指,
* 实际应用中,这里应该放最重要的函数,比如保存重要数据等*/
LED1_OFF;
LED2_ON;
R_BSP_SoftwareDelay(3,BSP_DELAY_UNITS_SECONDS);
/* 通过软件复位MCU*/
__NVIC_SystemReset();
}

31.3.2.7

主函数

列表5:主函数

左右滑动查看完整内容

/* 按键中断回调函数*/
voidkey1_callback(external_irq_callback_args_t *p_args)
{
(void) p_args;
/* 按键按下触发中断,进行喂狗操作*/
IWDT_Feed();
}
voidhal_entry(void)
{
/* 红色LED 亮3 秒*/
LED1_ON;
R_BSP_SoftwareDelay(3,BSP_DELAY_UNITS_SECONDS);
/* 按键中断初始化*/
g_external_irq_on_icu.open(&key1_ctrl, &key1_cfg);
g_external_irq_on_icu.enable(&key1_ctrl);
/* 初始化看门狗并开启计数器*/
IWDT_Init();
while(1)
{
/* 红色LED 灯灭,在这里只是代指,
* 实际上这部分应该写需要被WDT 监控的程序*/
}
#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}

注解

使用J-Link调试器时,WDT计数器不计数,因此不会重置设备或生成NMI。若要使监视器能够在调试时计数并生成重置或NMI,请在应用程序中添加R_DEBUG->DBGSTOPCR_b.DBGSTOP_IWDT=0代码。

31.3.2.8

下载验证

将程序下载到开发板内,红色LED灯亮,随后看门狗启动,需要在不超过2.1秒左右内的时间按下按键1(SW2)来刷新计数器的数值(喂狗)。一旦超过这个时间,看门狗计数器下溢,将产生NMI,也就是不可屏蔽中断,届时红色LED灯灭,蓝色LED灯会亮三秒,随后软件复位,程序从头运行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24784

    浏览量

    693501
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675503
  • 瑞萨
    +关注

    关注

    38

    文章

    22543

    浏览量

    91697
  • 开发环境
    +关注

    关注

    1

    文章

    277

    浏览量

    17704

原文标题:IWDT实验——瑞萨RA系列FSP库开发实战指南(113)

文章出处:【微信号:瑞萨嵌入式小百科,微信公众号:瑞萨嵌入式小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA系列FSP开发实战指南I2C读写EEPROM实验

    使用官方提供的FPS进行编程,官方提供的FPS具有方便、快捷、简洁的特性。
    的头像 发表于 01-27 10:02 3933次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>I2C读写EEPROM<b class='flag-5'>实验</b>

    RA系列FSP开发实战指南AGT低功耗定时器简介和结构框图

    RA MCU有两种定时器外设:GPT(General PWM Timer)定时器和AGT(Asynchronous General Purpose Timer)定时器。
    的头像 发表于 04-30 16:47 7582次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>AGT低功耗定时器简介和结构框图

    e2studio(1)----芯片搭建FSP环境

    视频教学 样品申请 请勿添加外链 e2studio软件 e2studio是的集成开发环境,FSP 提供了众多可提高效率的工具,用于开发
    发表于 09-30 15:28

    RA2L1入门学习】1. 点亮LED

    参考“RA2L1入门教学实验.pdf”进行的,之前使用过STM32CubeIDE和STM32CubeMX软件,相对应的是e2stud
    发表于 01-29 22:17

    RA-Eco-RA4M2开发板评测】+VS Code 下 RA4M2 开发环境搭建与 GPIO 点灯实验教程

    软件烧录芯片程序——RA系列FSP开发
    发表于 04-15 15:12

    RA4系列开发板体验】开发环境搭建和新手点灯指南

    RA4系列开发板体验】开发环境搭建和新手点灯指南
    发表于 11-24 22:54

    RA4系列开发板体验】10. 我的试用总结

    之前发帖:【RA4系列开发板体验】1. 新建工程+按键控制LED【
    发表于 12-10 22:34

    RA4系列开发板体验】体验过程

    拿到板子之后,做了几个实验过程,过程如下:1、在好奇心驱动下,逐步接触;参照网上的实例,学习开发环境一、开箱验货二、搭建环境参考“ 【
    发表于 12-18 16:20

    RA系列MCU选型指南

    RA系列MCU产品基于Arm Cortex-M内核,与自有内核RL78和RX系列一起,成为
    发表于 11-08 13:51 3375次阅读

    e2studio(1)----芯片搭建FSP环境

    e2studio是的集成开发环境,FSP 提供了众多可提高效率的工具,用于开发针对
    的头像 发表于 11-14 17:08 3540次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>e2studio(1)----<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>芯片<b class='flag-5'>之</b>搭建<b class='flag-5'>FSP</b>环境

    【有奖直播预报名】电子RA系列产品开发工具FSP4.0.0新特性介绍

    为使用电子RA系列ARM微控制器的嵌入式系统设计提供简单易用且可扩展的高质量软件。 直播主题
    的头像 发表于 11-22 12:20 1820次阅读

    【视频教程】RA单片机FSP开发(3)FSP架构-解释Blinky架构[上]

    干货分享 前篇回顾 【视频教程】RA单片机FSP开发(1)环境搭建(带RASC) 【视频教程】
    的头像 发表于 12-06 12:15 2278次阅读

    使用e² studio FSP基于RA2E1定时器配置PWM输出

    使用e² studio FSP基于RA2E1定时器配置PWM输出
    的头像 发表于 08-01 00:13 2351次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>e² studio <b class='flag-5'>FSP</b>基于<b class='flag-5'>RA</b>2E1定时器配置PWM输出

    电子RA系列微控制器的可扩展性强的配置软件包 (FSP)安装下载与使用指南

    电子RA系列微控制器的可扩展性强的配置软件包 (FSP)安装下载与使用指南
    的头像 发表于 06-11 17:21 2434次阅读

    RA系列FSP开发实战指南使用AGT基本定时功能实验

    实验内容适用于野火启明6M5、启明4M2、启明2L1开发板。本实验较为简单,我们将使用AGT定时器进行定时并触发中断请求产生中断,然后通过这个中断,切换LED的电平。
    的头像 发表于 05-08 10:26 314次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>使用AGT基本定时功能<b class='flag-5'>实验</b>