Hands-On 基于 LKSMC453 开发板 IWDG 看门狗功能测试

一、简介

本文主要介绍如何对 LKS_EVB_MCU453_V2.0 开发板 IWDG 看门狗测试。

硬件平台:LKS_EVB_MCU453_V2.0 开发板、LPCLINK2 Debugger or Jlink。

软件平台:Keil

参考例程:LKS32MC45x_PeripDemo_v2.5

图1 LKS 板


图1 LKS 板

图2  LPC

图2  LPC

二、Demo 示例

按照如图所示路径双击打开 Demo 文件。

图3

图4 出自 LKS32MC45x_PeripDemo_v2.5


图4 出自 LKS32MC45x_PeripDemo_v2.5

2.1 主函数

如果返回值是 start_PRES,也就是按下 start 键,执行看门狗喂狗操作,重新加载看门狗的复位时间(3s)。如果返回值是 stop PRES,也就是按下 stop 键,则 P4_5 置 1,点亮  LED1。

        2.1.1 key = GPIO_KEY_Scan(0):调用 GPIO_KEY_Scan 函数扫描按键状态。输入参数:mode:0,不支持连续按;1,支持连续按。这里是选择不支持连续按。函数返回的值将被存储在 key 变量中。

       2.1.2case start_PRES:如果 key 的值等于 start_PRES(表示“开始”按键被按下),则调用 IWDG_FeedDog() 函数。这通常是为了重置看门狗定时器,防止系统复位。

       2.1.3case stop_PRES:如果 key 的值等于 stop_PRES(表示“停止”按键被按下),则调用 GPIO_SetBits(GPIO4, GPIO_Pin_5):设置 GPIO4 的第 5 个引脚为高电平,用来点亮 LED1。

2.2 函数 Hardware_init()

进入函数 Hardware_init(),配置硬件初始化相关内容

图5出自 LKS32MC45x_PeripDemo_v2.5

这段代码是一个硬件初始化函数,主要的步骤包括:

        2.2.1关闭中断:__disable_irq(); 禁用所有中断。这是为了确保在进行硬件初始化时,不会有中断打断当前的初始化过程,从而避免潜在的竞争条件和不一致的状态。

        2.2.2 使能系统寄存器写操作:SYS_WR_PROTECT = 0x7a83; 解除对系统寄存器的写保护,以便可以对系统寄存器进行配置和初始化。依据来自以下:

图6 出自LKS32MC45x_DataSheet_V1.53.pdf

图6 出自LKS32MC45x_DataSheet_V1.53.pdf

2.2.2 GPIO 初始化:

GPIO_init(); 调用一个函数来初始化通用输入输出(GPIO)端口,设置它们的工作模式和状态。

图7 出自LKS32MC45x_PeripDemo_v2.5

图7 出自LKS32MC45x_PeripDemo_v2.5

        P0.7配置为输入模式,用于连接一个按键(start1)。GPIO_Mode_IN 表示该引脚作为输入,GPIO_AF_GPIO 表示该引脚的功能为普通 GPIO。

P4.7同样配置为输入模式,用于连接另一个按键(stop1)。

        P4.5配置为输出模式,用于控制一个 LED(LED1)。GPIO_Mode_OUT 表示该引脚作为输出。

所以:

输入引脚:P0.7 和 P4.7 被配置为输入模式,用于读取按键状态。

输出引脚:P4.5、P0.14 和 P0.13 被配置为输出模式,用于控制 LED 的开关状态。

2.2.3 看门狗初始化 IWDG_init():

        调用看门狗定时器初始化函数,配置看门狗的参数。看门狗用于监控系统的运行状态,确保在系统出现故障时能够自动复位。

图8 出自LKS32MC45x_PeripDemo_v2.5

图8 出自LKS32MC45x_PeripDemo_v2.5

        DWK_EN设置为 DISABLE,表示禁用深度休眠定时唤醒功能。这意味着在深度休眠模式下,看门狗不会自动唤醒系统。

WDG_EN设置为 ENABLE,表示启用独立看门狗。这是启动看门狗的关键步骤。

        WTH设置为 0,表示看门狗的定时唤醒时间。看门狗使用 32kHz RC 时钟从 IWDG RTH 开始计数,递减计数至 IWDG_WTH 产生唤醒信号。

        RTH设置为 0x1f000,表示复位时间。这个值对应的复位时间为 3 秒。计算方式是将 0x1f000 除以 32K(32768),得出看门狗的超时时间。

总结

通过配置 DWK_EN、WDG_EN、WTH 和 RTH 等参数,用户可以根据具体需求调整看门狗的行为。

2.2.4 函数 GPIO_KEY_Scan()

        可以看到,这里是用于扫描按键状态的函数,key_up=1 代表按键松开。先把按键标志置 1,然后在 if 语句里判断,key_start 或着 key_stop 中其中一个按下,执行 if 里的操作,首先把按键标志置 0,代表按键按下,接下来判断是 key_start 按下还是 key_stop 按下,如果是 key_start 按下,则返回值 start_PRES,如果是 key_stop 按下,则返回值 stop_PRES。两者都不是,判断按键 start 和按键 stop 有没有按下,都没有按下,则按键标志置 1 ,返回 0。

图9 出自LKS32MC45x_PeripDemo_v2.5

图9 出自LKS32MC45x_PeripDemo_v2.5

图10 出自LKS32MC45x_PeripDemo_v2.5

图10 出自LKS32MC45x_PeripDemo_v2.5

2.2.5 IWDG_FeedDog():

图10出自LKS32MC45x_PeripDemo_v2.5

图10出自LKS32MC45x_PeripDemo_v2.5

图11 出自 LKS32MC45x_UM_v1.54

图11 出自 LKS32MC45x_UM_v1.54

IWDG->PSW = PSW_IWDG_PRE

这行代码将 PSW 寄存器设置为 0XA6B4。写入密码解锁之后进行写操作。

图12 出自 LKS32MC45x_UM_v1.54

图12 出自 LKS32MC45x_UM_v1.54

IWDG->CLR = PSW_IWDG_CLR;

这行代码将 CLR 寄存器设置为 PSW_IWDG_CLR。CLR 寄存器通常用于重置看门狗计时器。

PSW_IWDG_CLR 值为 0x798D,对 B[0] 写 1,重置 WDT 计数器,开始重新计数 3s 灭灯。

三、硬件连接方式

图13 出自LKS_EVB_MCU453_V2.0



图13 出自LKS_EVB_MCU453_V2.0

LKS 采用 SWD 接口方式连接,在板子上有接出 SWD 烧录口如图所示。SWD 的接口定义如图所示,按照如图进行连接。

3.1 LPC Debugger 方式  

图14

       如图所示,LPC Debugger 板和 LKS_EVB_MCU453_V2.0 板连接,通过板上接口 GND、DIO、CLK、3.3V 与 SWD 的对应接口相连。这是本文选择的调试方式。

       由于板子没有 LED2 相关电路,所以我们需要外接一个 LED2 以用来方便观察现象,如图所示,我借用了另外一块板的 LED 部分,连接如图。对应的原理图如图:

图15
 

图16 出自LKS_EVB_MCU453_V2.0

图16 出自LKS_EVB_MCU453_V2.0

红色线:接 LED1 网络

灰色线:接 LED2 网络(由于此篇没有用到 LED2 所以可以不接)

紫色、橙色线:接 GND 网络

四、编译和下载

图17

  1. 左:构建目标文件
  2. 右:构建所有文件
  3. 下载代码到闪存
  4. 启动调试

先按 1 编译,2 下载到板上即可。

五、实验现象

图18

按下 stop 键,可以看到左下角外接灯板 LED1 灯亮。

图19

取下 stop 键,3s 之后 LED1 灯灭。

图20

重新按下 stop 点亮灯,然后 3s 内不停按下 start 键,可以看到灯一直亮。

六、总结

此篇文章的重要步骤:

按键扫描:程序通过 GPIO_KEY_Scan 函数不断扫描按键状态。

看门狗管理:当“开始”按键被按下时,程序会重置看门狗定时器,也就是常说的喂狗。

LED 控制:当“停止”按键被按下时,程序会设置 GPIO 引脚,点亮 LED。

        无限循环:主函数在一个无限循环中运行,持续监测按键输入并执行相应的操作。按键不按下:LED 亮 3s 复位灯灭。开始按键按下看门狗喂狗,防止程序复位,LED 常亮。

七、参考文献

[1]  LKS32MC45x_DataSheet_V1.54.pdf

[2]  SDK:LKS32MC45x_PeripDemo_v2.5

[3] 原理图:LKS_EVB_MCU453_V2.0

[4] LKS32MC45x_UM_v1.54

欢迎在点击此处前往博文下方留言评论,我们会及时回复您的问题。

如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com   
作者:小梨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值