STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗
STM32考试习题及答案

STM32考试习题及答案一、填空题1.当STM32的I/O端口配置为输入时, 输出缓冲器被禁止,施密特触发输入被激活.根据输入配置(上拉,下拉或浮动)的不同,该引脚的弱上拉和下拉电阻被连接。
出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。
2.STM32的所有端口都有外部中断能力。
当使用外部中断线时,相应的引脚必须配置成输入模式。
3.STM32具有单独的位设置或位清除能力。
这是通过GPIOx_BSRR 和GPIOx_BRR 寄存器来实现的。
4.ST公司还提供了完善的通用IO接口库函数,其位于stm32f10x_gpio.c ,对应的头文件为stm32f10x_gpio。
h 。
5.为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上.这时,复用功能不再映射到它们原始分配的引脚上。
在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR) 来实现引脚的重新映射。
二、选择题1.在APB2上的I/O脚的翻转速度为(A )。
A.18MHz B.50MHzC.36MHz D.72MHz4.当输出模式位MODE[1:0]=“10”时,最大输出速度为(B ).A.10MHz B.2MHzC.50MHz D.72MHz三、简答题1.简述不同复用功能的重映射.答:为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。
这时,复用功能不再映射到它们原始分配的引脚上.在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)来实现引脚的重新映射.各个复用功能的重映射可以参阅正文的介绍,由于内容比较多,正文介绍非常详细,这里省略。
2.简述STM32的GPIO的一些主要特点(至少5个)。
答:主要特点如下:❑通用I/O,可以作为输出、输入等功能。
❑单独的位设置或位清除.❑外部中断/唤醒线.❑复用功能(AF)和重映射。
8--独立看门狗

3)重载计数值喂狗(向 IWDG_KR 写入 0XAAAA) 库函数里面重载计数值的函数是:
IWDG_ReloadCounter(); //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器 通过这句,将使 STM32 重新加载 IWDG_RLR 的值到看门狗计数器里 面。 即实现独立看门狗的喂狗操作。
4) 启动看门狗(向 IWDG_KR 写入 0XCCCC) 库函数里面启动独立看门狗的函数是:
IWDG_Enable(); //使能 IWDG 通过这句,来启动 STM32 的看门狗。注意 IWDG 在一旦启用,就不 能再被关闭!想要关闭,只能重启,并且重启之后不能打开 IWDG, 否则问题依旧,所以在这里提醒大家,如果不用 IWDG 的话,就不要 去打开它,免得麻烦。
THE END!!
设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间 (
也就是看门狗溢出时间) ,该时间的计算方式为: Tout=((4×2^prer) ×rlr) /40 其中 Tout 为看门狗溢出时间(单位为 ms) ;prer 为看门狗时钟预分频值 (IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值) ; 比如我们设定 prer 值为 4, rlr 值为 625,那么就可以得到 Tout=64×625/40=1000ms,这样,看门狗的溢出时间就是 1s,只要你在一 秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不会导致看门狗复位( 当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准 确的 40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门
键寄存器(IWDG_KR)
预分频寄存器(IWDG_PR)
ST单片机:独立看门狗和窗口看门狗

ST单片机:独立看门狗和窗口看门狗
STM32单片机中有两只看门狗,分别是独立看门狗和窗口看门狗。
这两只看门狗有什么区别,今天来看一下。
1. 时钟源的区别
▪独立看门狗使用的是内部低速时钟,其频率为40kHz,但是这个40KHz不是准确的,其大致的范围是(30-60)KHz。
该时钟与外设时钟无关,所以不受系统晶振影响。
▪窗口看门狗使用的是PCLK1的时钟,该时钟与晶振相关。
2. 喂狗时间不同
▪独立看门狗喂狗时只要下限大于0就可以,上限是0XFFF。
而窗口看门狗必须在一个区域内喂狗才可以,上限是0x7F,下限是0X40,
3. 计数器不同
▪独立看门狗的计数器是12位递减的,即最大值是0XFFF;
▪窗口看门狗的计数器是7位递减的,即最大值是0X7F;
4. 产生结果不同
▪独立看门狗时,如果超时不喂狗,则直接产生复位,程序从头执行;
▪独立看门狗会在计数器到达0X40时产生中断,在0X3F时产生复位,所以可以把独立看门狗看成是一种中断。
使用用途举例
▪独立看门狗可以用来防止程序跑飞,在程序中开启看门狗,定时喂狗,尤其在通讯中使用广泛,当逻辑处理不当,使程序一直处于发送或接收状态不退出时,这时独立看门狗可以使程序复位,程序从头执行。
▪窗口看门狗可以产生中断,利用这一特点可以用来进行数据保存,当产生窗口看门狗中断时,可以用来保存数据。
如何设计STM32单片机独立看门狗程序?

如何设计STM32单片机独立看门狗程序?[导读]今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O 引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。
即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。
即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
1.1独立看门狗简介看门狗定时器 (WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。
如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。
如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
独立看门狗由专用低速时钟(LSI)驱动,计时主时钟发生故障它也仍然有效。
看门狗主要是用于在发生系统软件故障时,将系统复位。
也可以用于将系统从休眠或空闲模式唤醒。
STM32开发笔记WWDG和IWDG的用法

STM32 独立看门狗IWDG 与窗口看门狗WWDG2010年05月03日星期一21:54 独立看门狗Iwdg——有独立时钟(内部低速时钟LSI---40KHz),所以不受系统硬件影响的系统故障探测器。
主要用于监视硬件错误。
窗口看门狗wwdg——时钟与系统相同。
如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。
一,独立看门狗看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数1.STM32独立看门狗IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 –0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。
STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处

STM32 单片机中的独立看门狗与窗口看门狗有哪些
不同之处
1.关于看门狗的解释不再说明,窗口看门狗简而言之即只能看某个窗口期即某段时间内才能够喂狗。
32 的独立看门狗是没有中断的,而窗口看门狗可根据需要配置中断
2.关于独立看门狗和窗口看门狗的应用,手册p316 即17.1 节讲的非常清楚。
首先独立看门狗和窗口看门狗都可用来监视软件程序是否正常运行,而
具体而言,因为独立看门狗独立于系统时钟单独运行,因此其可用来监视是
否发生了硬件错误,比如说系统时钟故障,看门狗仍然能够起到重启的作
用,但是独立看门狗的计时精度比较差,更多的应用在独立系统运行之外的
对计时要求低的地方。
而窗口看门狗是由系统时钟提供的,因此其计时也会
很准确,当然其也就只能用来检测软件故障,比如硬件故障系统时钟坏了,
自身也就不动了,也就没有检测硬件故障的作用,因此窗口看门狗是用在检
测应用软件是否准确运行时使用的。
当然我们用系统情况下其实完全可以不使用32 提供的看门狗,我们自己某个任务的一个变量即实现看门狗的功能了。
3.另外注意,看门狗只是解决软件异常,独立看门狗称为硬件看门狗是其。
stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

stm32看门狗时间计算独立看门狗和窗口看门狗的特性是什么STM32看门狗时间计算(TWDG):1.STM32看门狗的例子IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG TImeout equal to 280 ms (the TImeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动; 因此,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。
可通过IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,通过以下方式喂狗:/* Reload IWDG counter */IWDG_ReloadCounter();3. 1.25KHz 即每周期为0.8ms共计时350 个周期,即350*0.8ms=280ms综合以上,STM32看门狗时间(时限)与频率计算公式为:看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数stm32独立看门狗和窗口看门狗特性、区别:总结起来,两者大概有以下几点特性和区别:1)独立看门狗没有中断,窗口看门狗有中断2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制3)独立看门狗只有下限,窗口看门狗又下限和上限4)独立看门狗是12位递减的。
stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

stm32看门狗时间计算独立看门狗和窗口看门狗的特性是什么STM32看门狗时间计算(TWDG):1.STM32看门狗的例子IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG TImeout equal to 280 ms (the TImeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动; 因此,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。
可通过IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,通过以下方式喂狗:/* Reload IWDG counter */IWDG_ReloadCounter();3. 1.25KHz 即每周期为0.8ms。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗
在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起的故障,低功耗模式是为了在CPU不需要继续运行时进入到休眠模式用以节省电能。
其中独立看门狗的时钟由独立的RC振荡器(STM32F10x 一般为40kHz)提供,即使在主时钟出现故障时,也仍然有效,因此可以在停止和待机模式下工作。
而且独立看门狗一旦启动,除了系统复位,它不能再被停止。
但这样引发的一个问题是当MCU进入到低功耗模式后由于CPU停止运行无法喂狗,会导致系统频繁复位。
那如何解决这个问题呢,难道独立看门狗和低功耗模式没法同时使用?
一个很好的方式是在休眠模式下通过RTC定时唤醒来喂狗,喂完够在进入继续进入到休眠模式。
比如看门狗复位的时间间隔为10s。
那么在进入休眠模式前设置RTC闹钟中断时间为5s。
这样每隔5s唤醒一次喂一次狗。
便可以很好的解决这个问题。
while(1)
{
// 执行任务
Task1();
Task2();
// ..
// 喂狗
dev_iwdg_feed();
// 进入待机模式开关
if(m_bEnterStandByMode)
{
// 使能外部中断,GPIOB3,用以MCU从待机模式唤醒
dev_exTI_enable(TRUE);
ENTERSTOPMODE:
// 设置RTC闹钟,5秒钟产生一次RTC闹钟中断*/
dev_rtc_setAlarm(5);。