stm32F4XX之独立看门狗 HAL库

发布者:明月昊天最新更新时间:2019-01-14 来源: eefocus关键字:stm32F4XX  独立看门狗  HAL库 手机看文章 扫描二维码
随时随地手机看文章

1:简介


独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持 工作状态。窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗 口来检测应用程序非正常的过迟或过早的操作。


IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时 间精度要求较低的场合。WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。


独立看门狗的时钟是一个内部 RC时钟,所以并不是准确的 32Khz,而是在 15~47Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 32Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的


2:特性


● 自由运行递减计数器


● 时钟由独立 RC 振荡器提供(可在待机和停止模式下运行)


● 当递减计数器值达到 0x000 时产生复位(如果看门狗已激活)


3:功能说明


独立看门狗有几个寄存器与我们这节相关,我们分别介绍这几个寄存器。首先是关键字寄存器 IWDG_KR。当通过对关键字寄存器 (IWDG_KR) 写入值 0xCCCC 启动独立看门狗时,计数器开始从复位 值 0xFFF 递减计数。当计数器计数到终值 (0x000) 时会产生一个复位信号(IWDG 复位)。任何时候将关键字 0xAAAA 写到 IWWDG_KR 寄存器中,IWDG_RLR 的值就会被重载到计 数器,从而避免产生看门狗复位


IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR 寄存器中写入 0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能



接下来,我们介绍预分频寄存器(IWDG_PR),该寄存器用来设置看门狗时钟的分频系数,最低为 4,最高位 256,该寄存器是一个 32 位的寄存器,但是我们只用了最低 3 位,其他都是保留位。



在介绍完 IWDG_PR 之后,我们介绍一下重装载寄存器 IWDG_RLR。该寄存器用来保存重装载到计数器中的值。该寄存器也是一个 32 位寄存器,但是只有低 12 位是有效的



4:配置步骤


1)取消寄存器写保护,设置看门狗预分频系数和重装载值首先我们必须取消 IWDG_PR 和 IWDG_RLR 寄存器的写保护,这样才可以设置寄存器IWDG_PR 和 IWDG_RLR 的值。取消写保护和设置预分频系数以及重装载值在 HAL 库中是通

过函数 HAL_IWDG_Init 实现的。该函数声明为:


HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);该函数只有一个入口参数 hiwdg,该参数是 IWDG_HandleTypeDef 结构体指针类型。接下来我们看看结构体 IWDG_HandleTypeDef 定义:

typedef struct

{

 IWDG_TypeDef *Instance;

IWDG_InitTypeDef Init; 

 HAL_LockTypeDef Lock;

 __IO HAL_IWDG_StateTypeDef State; 

}IWDG_HandleTypeDef;


成员变量 Instance 用来设置看门狗寄存器基地址,实际上在 HAL 库中已经通过标识符定义了,这里对于独立看门狗直接设置为标识符 IWDG 即可。


成员变量 Init 是一个 IWDG_InitTypeDef 结构体类型,该结构体只有 2 个成员变量,分别用来设置独立看门狗的预分频系数和重装载值,定义如下:


typedef struct

{

uint32_t Prescaler;

 uint32_t Reload; 

}IWDG_InitTypeDef;


成员变量 Lock 是一个锁存变量,该变量在 HAL 库中当操作配置 IWDG 之前设置为锁住LOCK,当配置操作完成之后设置为 UNLOCK,实际上是一个操作状态标识符。成员变量 State 也是 HAL 定义的一个过程标识符,用来记录 IWDG 处理状态


2)重载计数值喂狗(向 IWDG_KR 写入 0XAAAA)在 HAL 中重载计数值的函数是 HAL_IWDG_Refresh,该函数声明为:

HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);该函数有一个入口参数为前面讲解的 IWDG_HandleTypeDef 结构体类型指针,它的作用是把值0xAAAA写入到IWDG_KR寄存器,从而触发计数器重载,即实现独立看门狗的喂狗操作。


3) 启动看门狗(向 IWDG_KR 写入 0XCCCC)

HAL 库函数里面启动独立看门狗的函数是 HAL_IWDG_Start:

HAL_StatusTypeDef HAL_IWDG_Start(IWDG_HandleTypeDef *hiwdg);


通过上面 3 个步骤,我们就可以启动 STM32F4 的独立看门狗了,使能了看门狗,在程序里面就必须间隔一定时间喂狗,否则将导致程序复位。


下面附相关代码


1:初始化部分


IWDG_HandleTypeDef IWDG_Handler; //独立看门狗句柄

 

//初始化独立看门狗

//prer:分频数:IWDG_PRESCALER_4~IWDG_PRESCALER_256

//rlr:自动重装载值,0~0XFFF.

//时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).

void IWDG_Init(u8 prer,u16 rlr)

{

    IWDG_Handler.Instance=IWDG;

    IWDG_Handler.Init.Prescaler=prer; //设置IWDG分频系数

    IWDG_Handler.Init.Reload=rlr; //重装载值

    HAL_IWDG_Init(&IWDG_Handler); //初始化IWDG  


    HAL_IWDG_Start(&IWDG_Handler); //开启独立看门狗

}


2:喂狗


//喂独立看门狗

void IWDG_Feed(void)

{   

    HAL_IWDG_Refresh(&IWDG_Handler); //喂狗

}

关键字:stm32F4XX  独立看门狗  HAL库 引用地址:stm32F4XX之独立看门狗 HAL库

上一篇:STM32独立看门狗:你看狗都独立了
下一篇:STM32变量类型定义及延伸

推荐阅读最新更新时间:2024-03-16 16:22

第31章 STM32F429的SPI总线基础知识和HAL库API
31.1 初学者重要提示 STM32H7的SPI支持4到32bit数据传输,而STM32F1和F4系列仅支持8bit或者16bit。 STM3F429的主频168MHz时,SPI1、4、5、6最高通信时钟是42MHz,而SPI2和SPI3是21MHz。 SPI总线的片选引脚SS在单一的主从器件配置下是可选的,一般情况下可以不使用。 搜集了几篇质量比较高的SPI总线介绍帖:http://www.armbbs.cn/forum.php?mod=viewthread&tid=96788。 31.2 SPI总线基础知识 31.2.1 SPI总线的硬件框图 认识一个外设,最好的方式就是看它的框图,方便我们快速的了解SPI的基
[单片机]
第31章 STM32F429的SPI总线基础知识和<font color='red'>HAL库</font>API
STM32学习笔记之独立看门狗(IWDG)的使用
对STM32任何模块使用前都要对其初始化、首先就是初始化外设时钟,可以简单看系统时钟章节关于外设时钟,看数据手册如下: 看门狗由独立内部40M时钟驱动,所以不需要我们在初始化时钟配置寄存器。 读数据手册可以得知看门狗模块使用的系统LSI时钟,初始化配置之前要设置预分配寄存器IWDG_PR,以及设置IWDG_RLR两个寄存器的值,由于寄存器有写保护,根据数据手册可知: 所以在设置之前寄存器之前必须先对IWDG_KR(键寄存器)再写入0x5555,修改寄存器的值 。接下来看预分频寄存器 : 预分因子主要和看门狗的超时时间有关 看手册可知:
[单片机]
STM32学习笔记之<font color='red'>独立</font><font color='red'>看门狗</font>(IWDG)的使用
STM32HAL库学习笔记--硬件I2C读写AT24C512
一、CubeMx配置 开启I2C1,其余参数默认 在旧版本的CubeMx中,HAL库实现的I2C初始化带有一些BUG,比如需要在I2C引脚复用GPIO配置前加上I2C的时钟使能,不过这些BUG在新版本的CubeMx中似乎得到了解决,直接使用其生成的初始化程序和HAL库的I2C接口就可以实现成功的读写操作 二、读AT24C512DataSheet AT24Cxx系列芯片内存大小各异,页数和每页字节数也不同,要根据数据手册来确定该型号芯片的内存结构(Memory Organization) 由DS可知AT24C512的内存一共有 512 Pages x 128 Bytes = 65536 Bytes = 512 kbits
[单片机]
STM32<font color='red'>HAL库</font>学习笔记--硬件I2C读写AT24C512
STM8 独立看门狗(IWDG)
STM8独立看门狗介绍 独立看门狗模块可以用于解决处理器因为硬件或软件的故障所发生的错误。它由一个内部的128kHz的LSI阻容振荡器作为时钟源驱动,因此即使是主时钟失效时它仍然照常工作。 独立看门狗功能说明 图24是STM8独立看门狗模块的功能框图。 当在键寄存器(IWDG_KR)中写入数值0xCC后,独立看门狗就被启动了,计数器开始从它的复位值0xFF开始递减计数,当计数减到0x00时就会产生一个复位信号(WDG RESET)。 使用IWDG_PR和IWDG_RLR寄存器配置独立看门狗。IWDG_PR寄存器是用于选择驱动计数器时钟的预分频系数。每当KEY_REFRESH的数值(0xAA)写入到IWDG_KR寄存器时,独立看门
[单片机]
STM8 <font color='red'>独立</font><font color='red'>看门狗</font>(IWDG)
15-HAL库之定时器学习
1.基本定时器(TIM6/TIM7) 包含时钟源(CK_INT),1个16位自动重载递增计数器(CK_ARR),1个16位可编程预分频器(CK_PSC),计数器寄存器(CK_CNT),触发DAC的控制器组成。时钟源为APB外设时钟,定时事件生成事件主要由CK_PSC和CK_ARR两个寄存器值觉得。例如需要1s延时,时钟源周期为100us,设置CK_ARR为9999,CK_CNT从0开始到9999,总共技术10000次,即1s后更新事件和中断标志。 typedef struct { uint32_t Prescaler; //预分频系数,0~65535,时钟源经过该系数才是定时器时钟 uint32_t
[单片机]
15-<font color='red'>HAL库</font>之定时器学习
16.HAL库之SPI和QSPI
1.SPI协议(以RN8302为例) SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线(SCSN,SCLK,SDI,SDO). 总结传输流程: a.写时序 SCSN拉低,开启通讯。主机依次写入地址,命令,数据(高位在前,低位在后),CS校验。主机在SCLK下降沿将数据通过SDI写入从机。最后SCSN拉高结束通讯。 b.读时序 SCSN拉低开启通讯,主机先写入地址+命令共两个字节,随后在SCLK下降沿读取从机从SDO输出的数据(高位在前,低位在后)。最后SCSN拉高结束通讯。 驱
[单片机]
16.<font color='red'>HAL库</font>之SPI和QSPI
STM32F4串口接收(HAL库)使用笔记
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); 这个是一个类似于串口接收中断使能作用的函数,注释是Receives an amount of data in non blocking mode以非阻塞方式接收大量数据。想要使用此函数接收却不确定能接收到多少数据,则将uint16_t Size写作1,例如: HAL_UART_Receive_IT(&UartHandle1, (uint8_t *)Rx1Buffer, 1);//通过串口1接收,数据保存到Rx1Buffer,每次接收
[单片机]
HAL库教程10:定时器的PWM模式应用
  本节通过定时器的PWM模式驱动无源蜂鸣器,来演奏一段音乐。本博客在掌机的系列教程中介绍过蜂鸣器的驱动原理,感兴趣的可以参考电子琴 无源蜂鸣器驱动电路   蜂鸣器按照有无震荡源(不是电源),可以分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器上电就能工作,控制简单,但是只有一个音调。无源蜂鸣器需要单片机提供震荡源,虽然控制稍微复杂一点,但是可以发出不同频率的声音。 PWM原理   根据我们的电路,引脚输出高电平时,驱动电路为蜂鸣器提供了闭合回路,则引脚给高电平,蜂鸣器就能响。然而,只给高电平,无源蜂鸣器不能持续发出声音,只有一瞬间有声音;需要马上给低电平,然后再给一个高电平。即在一个很短的周期内,无源蜂鸣器在高电平持续期间工作,
[单片机]
<font color='red'>HAL库</font>教程10:定时器的PWM模式应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved