STM32F103RB 实作笔记(八)- IWDG 内部看门狗试验 (正点原子 STM32F103 nano开发板)程式解析

IWDG特性说明

IWDG(Independent WatchDog,独立看门狗),从字面上看,好像是设置了一个安全系统,防止外来的干扰;从 STM32 操作说明上看,实际上是放了一条狗咬自己(Reset复位),不想被咬就要不断的**”喂狗“**,而且是放出来后就关不回去(启动看门狗工作,启动后就不能停)?!这个功能在不想让自己陷入打瞌睡、昏迷的条件下是很好用的。
其中,下命令是由 KR 负责;调整喂狗的时间是 PR (时长)和 RLR(计数) 组合;
在这里插入图片描述
在这里插入图片描述
这一段描述是 KR 用0xCCCC 打开 WDG 后,就要定时 用 0xAAAA ”喂狗“;要调整”喂狗的时间“就要由 KR=0x5555 打开后,调整 PR 和 RLR。从下面的涵式 IWDG_Init(u8 prer,u16 rlr) 可以看到整个流程。

//***** IWGD.c ******
//看门狗·
//prer:0~7
//·频率 =4*2^prer.
//rlr:重装计数值,然后倒数到 0x0000
//实际 timer 的时间:Tout=((4*2^prer)*rlr)/40 (ms).
void IWDG_Init(u8 prer,u16 rlr) 
{
	IWDG->KR=0X5555;//写入0x5555表示允许访问IWDG_PR(IWDG->PR)和IWDG_RLR(IWDG->RLR)寄存器	 										  
  	IWDG->PR=prer;  //写入分频的大小,有 8 种   
  	IWDG->RLR=rlr;  //写入计数值 IWDG->RLR  
	IWDG->KR=0XAAAA;//reload											   
  	IWDG->KR=0XCCCC;//写入0xCCCC,启动看门狗工作,启动后就不能停	
}
//这个叫做”喂狗“ ,是个”重装“ 动作,让 IWDG 重新计数
void IWDG_Feed(void)
{
	IWDG->KR=0XAAAA;//reload											   
}

IWDG 在参考手册的说明

在这里插入图片描述
虽然 KR 有 16 bits,但是只认识 3 组字, 0x5555、0xAAAA、0xCCCC; 而且,还只能写入,如果要读,读出来只有 0x0000。

在这里插入图片描述
PR 只用 3 个 bit,有 8 种变化,产生下图的时间值
在这里插入图片描述
RLR 只用了 11 个 bit

在这里插入图片描述
前面提到, RLR 要在 KR = 0x5555 后才能写入,这里又说 要在 SR 的 RVU bit 为 0 时才重装;写程式的人都会想,是不是要再写一段 ”SR = xxxx"?
仔细看了 SR 的说明, 这个 RVU 和 PVU 都是硬件控制的。
在这里插入图片描述
下列是 IWDG 的框架图

在这里插入图片描述
这张图有一段提醒,就是 RC 振荡器可能不是那么精准,40 kHz 只是个参考值。APB 的接口时钟会有一点点的影响。不过也不是那么严重。

独立看门狗的应用场景

在这里插入图片描述
LSI 时钟影响 RC 的正确频率
在这里插入图片描述

这个实验的程式分析

主程式 main.c

int main(void)
 {		 
	Stm32_Clock_Init(9); // 
	delay_init(72);	     //   
	uart_init(72,115200);// 与前面的实验相同,请参照
	LED_Init();		  	 //  与前面的实验相同,请参照
    KEY_Init();          // 与前面的实验相同,请参照	 
	delay_ms(300);   	 // 
	IWDG_Init(4,625);    // 启动 IWDG PR=4, RLR=625  
	LED0=0;				 // 打开 LED0
	while(1)
	{
		if(KEY_Scan(0)==WKUP_PRES)IWDG_Feed(); // WKUP_PRES= 4
		delay_ms(10);
	}
}

依据 Tout=((4*2^prer)*rlr)/40 (ms) 的公式
Tout = ((4x2^4)*625)/40 (ms) =1000(ms)

实验的结果

在这里插入图片描述
本期笔记完毕!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值